场景
PostgreSQL 遇到too many clients already
连接 PostgreSQL 数据库时,突然遭遇到了一个报错:“FATAL: sorry, too many clients already”。这一错误提示表明数据库连接数已经达到上限,无法再创建新连接。
分析
可以通过以下几个SQL查找原因
查看PG最大连接数配置
show max_connections;
根据IP分组查询每个IP占用连接数
select client_addr ,usename,datname ,count(1) from pg_stat_activity group by client_addr,usename,datname order by client_addr ;
查看连接数详情
select * from pg_stat_activity order by client_addr,usename ;
PostgreSQL的视图pg_stat_activity
pg_stat_activity 是 PostgreSQL 内置的一个系统视图, 是 PostgreSQL 实例维护的一个进程相关的视图,是实时变化的。用于显示当前正在进行的数据库会话(连接)的活动信息。通过查询这个视图,数据库管理员可以监控当前数据库的状态,识别性能瓶颈,解决锁争用问题,确保系统正常运行。