FIELD NOTES FOR SYSTEM MAINTAINERS

保守運用ノート

動いて当たり前のシステムを、ひとりで守る人のための実務メディア

無料ツール|印刷用チェックリスト

DBコネクション枯渇・デッドロックの見つけ方と一次対処チェックリスト

最低ライン(優先順位つき:これだけで回る) 1) 現場を見る:`SHOW FULL PROCESSLIST` / `pg_stat_activity` で接続と長時間クエリを確認する 2) 原因を分ける:接続数が上限に張り付き=枯渇、余裕ありでロック待ち=デッドロックと切り分ける 3) 気づく仕組み:重要な DB に「接続数が上限の◯割で通知」の監視を1本入れる

余力が出たら拡張

  • slow query log を有効にし、詰まりの元になる重いクエリを平時から把握する
  • 接続リークが疑わしいアプリは、コネクションプールの上限・接続の閉じ方を見直す
  • 繰り返すデッドロックは INNODB STATUS の記録から、更新順序・トランザクションの短縮で対策する

免除条件(省略可)

  • 使い捨ての検証 DB や、止まっても業務に影響しない一時環境は監視を省略可。ただし「詰まったときにまず接続を見る」手順だけは共有しておく。

確認項目

  • DB が詰まったとき、まず SHOW FULL PROCESSLIST / pg_stat_activity で接続を確認する手順を知っている
  • max_connections と現在の接続数を並べて、枯渇かどうかを判断できる
  • 接続数に余裕があるのに固まる場合はデッドロック(ロック待ち)を疑える
  • MySQL なら SHOW ENGINE INNODB STATUS でデッドロックの詳細を確認できる
  • 詰まりの元の長時間クエリを、KILL / pg_terminate_backend でピンポイントに止められる
  • Sleep 接続の溜まり(接続リーク)を、PROCESSLIST から読み取れる
  • 重要な DB に「接続数が上限の◯割で通知」の監視が入っている
  • 「再起動で直った」で終わらせず、いつ・何が詰まったかを記録に残している

この内容は記事「DBコネクション枯渇・デッドロックの見つけ方と一次対処」のチェックリストです。印刷してそのままお使いいただけます。 / 無料ツール一覧へ