障害調査時のふるまい
何かのタスクをやっているときに障害の報告があって割り込みで調査することがままというか結構ある。そのときにどういったことをしているかまとめてみた。
過去の情報から得られるのものはないか探してみる
・欠陥管理、メール、チャット etc.
同じような障害が過去に起こってなかったかをまず確認する
同一障害があれば早いが、類似の障害がないかも確認する
ログ調査
・ベタに見るとノイズが相当あって見辛いので、
・キーワードでピックアップ
・ツールを使って整理
などする
・複数スレッドが同時実行されていることが多いので、スレッドIDに注目しておく
・時系列を洗い出す(ローカルタイム・標準時間に気をつける)
・正常時との差分がないか
再現確認
・再現性があるなら実際に動かしてみる
・デバッガが使えるなら使う
その他
・メモリダンプの解析
・ソースコード/モデルファイル/仕様書などの成果物を確認する
・いきなりソースコードを見るよりは、上流から見ていったほうがあたりが
つけやすいし流れも追いやすい
・誰かに話してみる
・有識者に相談できるならそれが早い
・知らない人に話しても、話している間に整理できることがある
それでも全くわからないときは、調査用モジュールを作って渡したり、知りたい
情報があれば、それについて確認する
まとめ
基本的には仮説検証サイクルを回すことが重要。仮説を立てて検証する、
違っていたらまた新たな仮説を立てる。その結果を積み上げていく。
結果を残しておくことで報告時にも役に立つし、今後の足がかりになることもある。
調査しやすくするために
・調査の観点に立ってログの残し方には気をつけて作る
・ループなどで大量に出力されないか
・十分な内容が出力されているか
・ログ出力ルールがなければ作る
・検索にヒットしやすいように欠陥管理を工夫する