PostgreSQL 连接数耗尽的定位与修复
客户端报 FATAL: sorry, too many clients already 或 remaining connection slots are reserved for non-replication superuser connections。新连接被拒绝。
SHOW max_connections;
SHOW superuser_reserved_connections;
SELECT state, count(*) FROM pg_stat_activity GROUP BY state;
SELECT usename, application_name, count(*)
FROM pg_stat_activity GROUP BY 1,2 ORDER BY 3 DESC;
SELECT pid, state, query_start, query
FROM pg_stat_activity WHERE state <> 'idle' ORDER BY query_start;
idle in transaction 连接占位。max_connections 偏低,或预留连接被占满。idle in transaction。max_connections,同时评估内存(每连接有开销)。idle_in_transaction_session_timeout,清理异常事务。psql — 连接与诊断pg_stat_activity — 会话状态pgbouncer — 连接池