pgbouncer 不保持服务器连接打开

问题描述

我最近安装了一个 Pgbouncer,因为我们的数据库收到了很多连接。 (网络/API 活动)。 问题是:显然,pgb 并没有在他的池中保留打开的连接以在之后重用它们。 我认为这是因为:

  • 检查数据库时(从 pg_stat_activity 中选择 ..)我看到连接数量随着流量的增长而增长,但在高峰期之后它减少了很多。 (整个过程发生在我为 server_lifetime 设置的 1800 秒
  • 当我在 pgbouncer 数据库查询 'show pools' 时,我可以看到 'active sv' 增加,但是在处理它们之后,我没有看到很多 'sv idle' 留在那里,直到下一个流量高峰。

有什么可以解释为什么连接没有保持在 'sv idle' 中的吗? 我该如何“调试”/进一步测试以确定可能出现的问题?

我这样设置 pbgouncer :

  • server_lifetime = 1800
  • server_idle_timeout = 1800
  • max_client_conn = 5000
  • default_pool_size = 1500
  • min_pool_size = 50
  • pool_mode = 交易

(我尝试使用 pool_mode = session 具有相同的行为)

脚本打开连接是这样的:

$co = new PDO($dsn,$user,$pwd);
$co->exec('SET statement_timeout TO 10000;');
$co->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 
$co->setAttribute(PDO::ATTR_PERSISTENT,true); 

并在查询数据库后,执行 PDO::closeCursor()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...