PostgreSQL 连接耗尽
应用报 FATAL: sorry, too many clients already 或 remaining connection slots are reserved;pg_stat_activity 连接数接近 max_connections,新连接被拒绝。
psql -c "SELECT count(*), state FROM pg_stat_activity GROUP BY state;"
psql -c "SHOW max_connections;"
psql -c "SELECT usename, application_name, client_addr, count(*)
FROM pg_stat_activity GROUP BY 1,2,3 ORDER BY 4 DESC;"
查看连接池:
psql -c "SELECT * FROM pg_stat_activity WHERE state = 'idle in transaction';"
idle in transaction 长时间占用连接。idle_in_transaction_session_timeout。max_connections,同时评估内存开销。psql — pg_stat_activitypgbouncer — 连接池pg_stat_statements — 慢查询pg_terminate_backend — 清理异常连接