600000007スマートフォン用の表示で見る600000007プログラムと折り紙のブログです。この広告は、90日以上更新していないブログに表示しています。2017-07-06障害切り分けいつものように後輩へ障害対応方法を指南していたところ、ふと我に返り「そもそも自分はどうやって切り分けているのだろう?」という疑問が湧いてきました。経験的にこれを確認したほうが良い、そっちは関係ないなどということは分かっているんですが、どういったルーチンを自分が行っているのかは整理されていませんでした。いうわけで自分が普段なんとなくやっている切り分け方法を整理して言語化してみました。障害に遭遇したけど原因がわからず手詰まりになった、もっと効率的に切り分けたいといった場合の一助になれば幸いです。ここでは如何に切り分けていくかということだけに焦点を当てており、障害の検知や再発防止などには触れていません。障害とは?ここで言う障害とは、以下のような事象を指します。サイトに繋がらないエラーでプログラムが落ちるPCの電源が入らない構成情報を把握する障害が発生している環境の構成を把握しましょう。バージョン情報は過去事例と照らし合わせる上で重要な情報となります。システム構成サーバ構成ネットワーク構成データベース構成データフローH/W詳細サーバのスペック、バージョン、設置場所ネットワーク機器のバージョン部品のバージョンS/W詳細OSのバージョンフレームワークのバージョンライブラリのバージョンプロトコルのバージョンデータフォーマットのバージョンブラウザのバージョン時系列で整理する発生した現象を時系列で整理しましょう。複数の障害が発生している場合、最初の障害が大元の原因となっていることが多いです。メインユーザが変わった日時ユーザ数が増加した日時エラー内容をちゃんと読むエラーメッセージをいきなりググったりせずに、まずはきちんと何を言っているのか読み込みましょう。現象を分解する発生している現象をフェーズで分けて、どの範囲まで正常でどこから異常なのか調べましょう。1行で書いてますがこれは切り分けの上で最も重要な作業であり、きちんと正常動作を把握しているかどうか、より細かく分解できるかどうかが切り分け力=技術力の差に直結します。再現を試みるある程度発生条件の見当がついたら、現象の再現を試みましょう。可能な限りデフォルト環境で、小さい構成で再現を試みるとより効率的です。他の環境と比べるもし同じ構成で正常に動いている他の環境があれば、設定などの差分を調べましょう。以前のバージョンに切り戻すと復旧する場合は、その差分が原因である可能性が高いです。あれば正常な環境と同一になるように少しずつ設定を変更して、どの時点で改善するかを調べるのも手です。規則性を見つける障害の規則性を見つけると、切り分けの手がかりになります。手順に偏りはないか?特定のユーザのみ発生する特定の操作のみ発生する特定の回数繰り返すと発生する特定の接続元からのみ発生する環境に偏りはないか?特定のサーバだけで発生する特定のネットワークを経由したときだけ発生する特定のバージョンだけで発生する特定のブラウザでのみ発生するアウトプットに偏りはないか?壊れたファイルのサイズが一定ファイルの破損箇所が同じ壊れる部品が同じ知らない情報があるか調査する実は自分が知らないだけで他にもエラーが保存されていたり、デバッグ機能があったりするケースがあります。OSがcoreを吐いているサーバのシステムボードの管理領域にH/Wログが出ている直前の印刷内容をダンプすることができる操作ログが出力されている設定が他にもある設定を反映するための特殊な手順がある利用してるクラウドサービスが仕様変更のニュースを出しているバグレポートがあるそういった情報が無いか調査をして、新しいヒントを得られることも多いです。申告された内容を精査する伝聞された情報は不正確な事も多いので、すべてを鵜呑みにせずに自分自身で確認したものを中心に整理しましょう。ユーザー申告の場合、どこをみて障害と判断して報告してきたのかを知ることは重要です。PCの電源が入らない!という申告があってもディスプレイの電源が入っておらず暗いからそう判断しただけ、といったケースはよくあります。思い込みを疑う設定を直したのに改善しない!原因はこれで間違いないはずなのに!と思ったら違うサーバで操作していた、なんて経験はないでしょうか?落ち着いて自分がやった作業を見直してみましょう。違うサーバで作業している違う設定ファイルを開いている設定を編集したが保存していない違うユーザのデータを見ている読んでいるドキュメントが違うエラー番号を見ただけで過去事例と結びつけ、原因を決めつけてしまうケースもあります。目の前の事象と向き合って切り分けましょう。原因を特定できたと断定できるのは現象が改善した時のみです。人に聞く1人で調査しても埒が明かない時は、同僚やコミュニティに助力を求めましょう。有料サポートを契約しているならもちろん有効活用しましょう。・・・大体自分がいつもやっていることは出尽くしたと思います。これらはそれぞれ1度行えばよいというものではなく、何度もぐるぐると行ったり来たりして徐々に原因を追い詰めていきます。繰り返しになりますが、原因が確定するのはあくまで障害が改善したその瞬間です。それはエンジニアにとって喜びの瞬間でもあるので、解決を目指して突き進みましょう。私の職場では、昼休みの度に同僚とバックギャモンをプレイして...2016-09-24Backgammon:エースポイントゲームの定理。日本バックギャモン協会要するにエースポ...2014-09-08Macでssreflect以下はssreflectをMacで動かそうとした悪戦苦闘の記録です。関連するニュースが...2013-10-26Gradle初心者がはまったこと、悩んだ事。»プロフィールid:sakamoto_desuプログラマらしいことをしてみようと挑戦中。Fallとキャリアかっこわるいプルリク月別アーカイブはてなブログをはじめよう!sakamoto_desuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。