报错内容
psql连接报错数据库连接已满,无法建立新的连接。
[53300] FATAL: sorry, too many clients already.
解决办法
查看当前的连接数
postgres=# select count(1) from pg_stat_activity;
count
-------
76
(1 row)
postgres=# show max_connections;
max_connections
-----------------
100
(1 row)
1、关闭空闲连接
查看目前所有的连接的进程id、应用名称、状态。
select datname,pid,application_name,state from pg_stat_activity;
通过pid终止空闲连接(该语句只能关闭一个连接终端的pid)
select pg_terminate_backend(pid) from pg_stat_activity;
通过下面的SQL查询所有处于等待状态的进程
select concat('select pg_terminate_backend(', pid, ') from pg_stat_activity;') from pg_stat_activity where state = 'idle';
然后批量执行生成的脚本SQL即可关闭所有的空闲连接。然后查看当前连接数
select count(1) from pg_stat_activity;
此时已经减少了很多空闲连接。尝试客户端访问数据库可以连接成功