1

在 PHP Web 应用程序的管理仪表板页面上,我想显示有关数据库连接的详细信息。根据本地设置,连接可能是直接的,也可能由 PgBouncer 代理。是否可以准确检测到我正在连接的内容?此信息可能对调试有用。

检查默认端口(6432 与 5432)是可能的,但显然不可靠。PgBouncer 是否向连接中注入任何有助于将其与直接连接区分开来的东西?

4

2 回答 2

1

也许另一种选择是根据您的“本地设置”使用不同的访问凭据?通过 pgbouncer 配置的连接可以使用与直接连接的不同的用户名/密码。这将允许您区分连接。当然,这是否可能取决于您的本地设置。

于 2017-03-16T10:34:57.207 回答
1

没有直接的方法。Pgbouncer 不会在pg_stat_activity.application_name其他地方或其他地方填充此信息。当然,您会看到运行 pgbouncer 的机器的 IP pg_stat_activity.client_addr,但这并不意味着它肯定是 pgbouncer。pg_stat_activity将 pgbouncer 的命令结合在一起的一种方法show clients- 这样您就知道查询的来源,我在另一篇文章中对此进行了描述: 通过 pgbouncer 查找查询的来源 但仍然需要稍后将 php sql 进程 pid 结合在一起才能见连接。

此外 - php 可以同时使用两个连接(任意数量),因此理论上您需要检查每个语句的连接方式。

于 2017-03-16T09:35:40.927 回答