一、问题
程序报错,提示:psql:致命错误: 对不起, 已经有太多的客户 / 致命错误: 对不起, 已经有太多的客户
二、解决办法
查看一下当前的连接情况,查询sql如下:
select * from pg_stat_activity;
结果集会显示出当前连接的数据库名,用户,IP地址,连接开始时间,查询的语句,状态等。
这时我们可以根据 state 列进行区分:
1、如果大部分的连接state列的值为active,则需要考虑增加数据库的最大连接数,修改方法为:
找到postgresql安装配置文件 postgresql.conf ,直接修改配置值max_connections = 2500 # (change requires restart)
其中2500为修改的具体值,根据自己的需要指定,修改后需要重启数据库服务。
2、如果大部分的连接state值为idle,并且我们不(懒)想(的)重启的话,可以用pg_stat_get_backend_activity(integer)
函数kill掉处于空闲状态的连接,完整sql如下:
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE state='idle'