在 PgBouncer 启动时,启动命令执行结束没有任何反馈,也无报错,但是PgBouncer没有正常启动。
在/。。。/pgbouncer/log/pgbouncer.log中,看到 CST [29067] ERROR evdns_base_new failed 报错。

于是在百度和bing搜索ERROR evdns_base_new failed,都没有与日志中报错一样的文章。翻墙谷歌后找到一篇netbackup的一篇文章里报错一样,提到
Since pgbouncer refers to /etc/resolv.conf file even when DNS is not used, it will not work properly if /etc/resolv.conf file is missing.
(由于即使不使用 DNS,pgbouncer 也会引用 /etc/resolv.conf 文件,因此如果缺少 /etc/resolv.conf 文件,它将无法正常工作。)

检查etc目录下,确实没有查到/etc/resolv.conf文件,手动 touch 生成 一个resolv.conf文件,启动还是一样的报错,
后来给resolv.conf文件配置了 一行 nameserver 127.0.0.1 后启动成功。
梳理网上相关文章,整理一下。ERROR evdns_base_new failed 错误通常表明 PgBouncer 在初始化 libevent 的 DNS 解析功能时遇到了问题。
可能原因
- /etc/resolv.conf 文件缺失或配置错误:该文件定义了 DNS 服务器的地址,如果文件不存在或指定的 DNS 服务器无法访问,将导致 DNS 解析失败。
- 网络问题:服务器可能无法访问配置的 DNS 服务器。
- 权限问题:某些情况下,PgBouncer 或其运行的用户可能没有足够的权限读取 /etc/resolv.conf 文件。
诊断步骤
-
检查 /etc/resolv.conf 文件:
-
确认该文件存在且包含有效的 DNS 服务器地址。可以使用 cat /etc/resolv.conf 命令查看其内容。
-
测试 DNS 解析: 例如:nslookup google.com
-
检查 PgBouncer 和 libevent 版本兼容性:
PgBouncer1.20及以上版本,一般在libevent2.0以上即可

解决方案
- 修正 /etc/resolv.conf 文件:
确保该文件包含有效的 DNS 服务器地址。如果文件不存在或为空,需要手动创建并编辑它 - 使用静态 IP 地址或本地 DNS 服务器:
如果可能,尝试将 DNS 服务器配置为静态 IP 地址或本地 DNS 服务器的地址,以减少网络依赖。




