【问题标题】:Is it possible to detect that PHP is connecting to a PostgreSQL database through a PgBouncer pool?是否可以检测到 PHP 正在通过 PgBouncer 池连接到 PostgreSQL 数据库?
【发布时间】:2014-08-13 23:21:13
【问题描述】:

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

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

【问题讨论】:

  • 没想到投反对票...请解释一下?

标签: php postgresql pgbouncer


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      相关资源
      最近更新 更多