DBAtlas · データベース運用アトラス

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 を増やすとメモリを消費するため、プーリングを優先する。スーパーユーザー用に予約された接続により管理アクセスは確保される。

DBAtlas で開く →

同じデータベースの他の項目