pgbouncer到pgbouncer之间的平均查询持续时间很高

时间:2018-10-01 06:21:35

标签: postgresql-9.6 pgbouncer

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

class CropWindowComponents: public QWidget
{
    Q_OBJECT # <--- add this
public:
...

我注意到在PostgreSQL服务器上引入新的数据库层之后,平均查询持续时间在高峰时段变得非常高,这是由于pgbouncer第一层上的客户端等待开始运行起来如果我在此主机上拨动开关以将流量直接发送到PostgreSQL服务器,则平均查询持续时间会立即下降,并且一切开始恢复正常。我可以理解,引入新的pgbouncer层会增加一跳,但不会严重影响指标。在第一个PGB上avg_query_duration升高的可能原因是什么?我该如何缓解?

1 个答案:

答案 0 :(得分:0)

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