FIELD NOTES FOR SYSTEM MAINTAINERS

保守運用ノート

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

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

急に重くなったDBチェックリスト

全部そろえる前提ではありません。上から優先順位で並べています。

重くなっている、まさにいま

  • processlist / pg_stat_activity を実行時間の長い順に見たか
  • 長く走っているクエリが実際にあったか(なければDB以外を疑う)
  • そのクエリが SELECT か、書き込み系かを確認したか
  • 止めるIDと、そのクエリ本文を突き合わせて確認したか
  • KILL QUERY / pg_cancel_backend から試したか(いきなり接続を切っていないか)
  • 止めた内容と時刻をメモに残したか
  • 関係者に一報を入れたか(原因調査中である旨を含めて)

落ち着いたら

  • スロークエリログ(slow_query_log / log_min_duration_statement)を有効にしたか
  • しきい値をまず1秒にしたか
  • ログの出力先とディスク残量、ローテーションを確認したか
  • 設定ファイルにも書いて、再起動後も残るようにしたか
  • 合計実行時間の長い順に並べて、上位を見たか
  • 犯人クエリを EXPLAIN で確認したか(全件走査・読む行数・並べ替え)
  • いつから遅くなったかを、変更履歴やデータ量の推移と突き合わせたか

直すとき

  • 呼ぶ回数・取る量を減らせないか、先に検討したか
  • 時間帯をずらすだけで済まないか検討したか
  • インデックス追加は検証環境で所要時間を測ったか
  • 本番反映の手順(バックアップ・切り戻し)を用意したか
  • 変更管理台帳に記録したか
  • 暫定対応で終えた場合、恒久対応の予定を残したか

次に備える

  • スロークエリログを定期的に見る日を決めたか(週1回など)
  • 応答時間の監視やアラートのしきい値を見直したか
  • 今回の内容をポストモーテムとして1枚残したか

「重くなっている、まさにいま」の最初の2つができれば、その日は乗り切れます。残りに○が付かない日があっても大丈夫です。

この内容は記事「急に重くなったDB|スロークエリの特定と一次対処の順番」のチェックリストです。印刷してそのままお使いいただけます。 / 無料ツール一覧へ