FIELD NOTES FOR SYSTEM MAINTAINERS

保守運用ノート

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

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

同時実行で壊れるバグの見つけ方チェックリスト

  • 手元で再現しない・混む時間だけ起きる・数がずれる、などの「同時実行の型」に当てはまるか見たか
  • 壊れたデータに、ほぼ同時(同じ秒)のリクエストが来ていないかログで確かめたか
  • 重複や数のずれを、SQLの集計で数字として確かめたか
  • 「SELECTしてからUPDATE/INSERT」している箇所をコードで探したか
  • 「登録済みか確かめてからINSERT」している箇所がないか見たか
  • 編集画面が、読み込んだ内容をまるごと上書き保存していないか見たか
  • cronのバッチに二重起動防止(flockなど)があるか確かめたか
  • 本番ではなく検証環境で、同時リクエストを送って再現を試したか
  • 直し方を、一意制約・条件付き更新・行ロック・楽観ロックのどれか1つに決めたか
  • 直したあと、同じ同時リクエストを流して壊れないことを確かめたか

全部を一度にそろえなくても大丈夫です。まずは「同時実行を疑ってみる」と「重複チェックのSQLを1本流す」の2つだけで、見えなかった原因にぐっと近づけます。

この内容は記事「同時実行で壊れるバグの見つけ方|排他制御の漏れを探す4つの手順」のチェックリストです。印刷してそのままお使いいただけます。 / 無料ツール一覧へ