53300: too_many_connections
PostgreSQL含义
服务器已达到 max_connections 允许的最大并发连接数;无法接受新连接。
原因
没有连接池或连接池大小不当、连接泄漏、应用打开大量短生命周期连接,或 max_connections 设置低于工作负载需求。
解决方法
识别连接来源:SELECT usename, state, COUNT(*) FROM pg_stat_activity GROUP BY 1,2。有针对性地终止长时间空闲的客户端连接(不加过滤的批量终止会影响所有应用和连接池):SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE state = 'idle' AND backend_type = 'client backend' AND usename = 'app_user' AND state_change < now() - interval '10 minutes' AND pid <> pg_backend_pid()。真正的解决办法是使用 PgBouncer 之类的连接池。增大 max_connections 会消耗内存;优先使用连接池。为超级用户保留的连接可确保管理访问始终可用。