【问题标题】:Average query duration goes high between pgbouncer to pgbouncerpgbouncer 到 pgbouncer 之间的平均查询持续时间变长
【发布时间】:2018-10-01 06:21:34
【问题描述】:

我有两层 pgbouncers (v 1.8 uptil PR 147) 连接到 postgresql 数据库。 pgbouncer 的第一层接收来自多个服务的请求,试图连接到多个数据库。这些请求由第一层汇集,并作为新请求转发到数据库,第二层 pgbouncer 运行在 postgresql 数据库之上(在同一主机上)。这些请求被第二层 pgbouncer 池化,然后最终发送到数据库执行。 TLS 模式 在两个 pgbouncer 中都设置为 'require',因为它们位于不同的主机中。 PGB第一层的default_pool_size40,第二层为400数据库一次最多可以处理 500 个连接pool mode 都设置为 'transaction'。第一个 pgbouncer 主机内有一个内置脚本,可以将流量直接切换到 postgresql 服务器(如果需要)。

| Services | -----> | Pgbouncer | --------> | Pgbouncer ----> DB |

我注意到在 postgresql 服务器上引入新的数据库层后,由于 pgbouncer 第一层上的客户端等待开始,高峰时段的平均查询持续时间非常长向上。如果我打开这台主机上的开关以将流量直接发送到 postgresql 服务器,平均查询持续时间会立即下降,一切都开始恢复正常。我可以理解,引入一个新的 pgbouncer 层会增加一个额外的跳跃,但它不应该对指标产生如此大的影响。 avg_query_duration 在第一个 PGB 上变高的可能原因是什么?如何缓解?

【问题讨论】:

    标签: postgresql-9.6 pgbouncer


    【解决方案1】:

    我们刚刚通过增加 PG 主机上运行的 pgbouncer 的文件描述符限制解决了这个问题。 FD 限制最初设置为 1024 字节。它提高到 64K https://unix.stackexchange.com/questions/345595/how-to-set-ulimits-on-service-with-systemd。这个数字取决于 pgbouncer 可以接收的最大连接数的限制,而减少这对我们来说不是一个选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-05
      • 1970-01-01
      • 1970-01-01
      • 2021-08-09
      • 2019-02-17
      • 2021-11-21
      相关资源
      最近更新 更多