我已经设置了两层pgb门卫(V1.8向上PR 147)连接到postgresql数据库。第一层pgbouncer接收来自试图连接到多个数据库的多个服务的请求。这些请求由第一层汇集,并作为新请求转发到数据库,后者在postgresql数据库之上运行第二层pgb强(在同一主机上)。这些请求由第二层pgbouncer池组成,然后最后发送到数据库执行。TLS模式设置为'require',因为它们驻留在不同的主机中。第一层的default_pool_size是40,第二层是4 0。数据库可以一次处理最大500连接。在'transaction'中,池模式设置为both.There,这是在第一个pgb强主机中内置的脚本,它可以将流量直接切换到postgresql服务器(如果需要的话)。
| Services | -----> | Pgbouncer | --------> | Pgbouncer ----> DB |
我注意到,在postgresql服务器上引入了新的数据库层之后,在高峰时期,平均查询时间非常长,因此等待第一层的客户端开始上升。如果我打开主机上的开关将流量直接发送到postgresql服务器,平均查询时间就会立即下降,一切都开始恢复正常。我可以理解,引入一层新的弹出器会增加一个额外的跳转,但是它不应该对度量标准产生如此大的影响。avg_query_duration在第一个PGB上走高的可能原因是什么,我如何减轻它?
发布于 2018-10-10 19:57:59
我们只是通过增加在PG主机上运行的pgb强的文件描述符限制来解决这个问题。FD限制最初设置为1024字节。提高到64K https://unix.stackexchange.com/questions/345595/how-to-set-ulimits-on-service-with-systemd。这个数字取决于最大连接的限制,这是保镖可以接收和减少这不是我们现在的一个选择。
https://stackoverflow.com/questions/52585533
复制相似问题