问题描述
我最近安装了一个 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 (将#修改为@)