某客户反馈 系统报内部错误, pq sorry too many clients already,影响客户使用流水线。
看提示很明显,pq 数据库连接满了,于是查看数据库连接进程。
查看最大连接数,为100(即默认值)
show max_connections; |
查看 当前活动连接数 ,显示为 104,超了4个
select count(1) from pg_stat_activity; |
查看数据库剩余连接数:
select max_conn-now_conn as resi_conn from ( select setting::int8 as max_conn,( select count(*) from pg_stat_activity) as now_conn from pg_settings where name = 'max_connections' ) t; |
同样得到 -4 的超出结果
再查看一下有那些会话
select datid,datname,pid,usesysid,usename,application_name,client_addr,client_port,state,query from pg_stat_activity; |
深层原因
上周客户增加了 builder节点,这里runtime就会增加20个会话,所以很容易超100。
1,临时踢一下idle的会话,很快又超过了100了,无效。
select pg_terminate_backend(pid) from pg_stat_activity where state=’idle’; |
2,修改最大连接数,重启pq,问题解决。
找到pg容器的配置文件,一般在 normal节点。
修改 /data/postgres/postgresql.conf 里面的 max_connections 为200
1,增加builder节点时考虑同时增加pg连接数
2,提前修改pg默认连接数
文章评论