データベースに PostgreSQL を使っているアプリケーションが、急に下のエラーメッセージを出して PostgreSQL に接続できなくなった。
remaining connection slots are reserved for non-replication superuser connections
接続が多すぎて上限に達しているのかも。まずは接続数の上限を調べてみる。
SHOW max_connections;
接続数の上限は 100 だった。
現在、何がどれくらいの接続しているのか調べてみる。
SELECT COUNT(*) FROM pg_stat_activity;
セッション数は 98。上限ギリギリ。なぜか、pgAdmin のセッションが半数以上を占めていた。
今回は pgAdmin 閉じてもらうことで事なきを得たけど、強制的に切断したい場合は次の SQL を発行することになりそう。
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE pid <> pg_backend_pid() AND datname = 'DB 名' AND application_name LIKE 'pgAdmin%';