システムトラブルのパターン

こんにちは、d99 です。 随分間があいてしまいました。今回はシステムトラブルにはどんなパターンがあるか、について考えてみたいと思います。 運用段階にあるシステムに発生するトラブルは、その見え方によっていくつか典型的なパターンがあり、その内のいくつかには原因追及の手順がある程度確立されているように思います。まずは(追及手順はひとまず置いておいて)、どんなパターンがあるかを考えつつまとめてみました。 – クラッシュ(crash) “落ちる” という現象、つまり異常終了してしまうというトラブルです。 Windows オペレーティングシステム自体の異常終了は、ブルースクリーンが該当します。システム自体ではなくアプリケーションが異常終了すると、一般保護違反といったエラーダイアログが出たり、エラー報告しますかと聞かれたり、ワトソン博士がお出ましになったり :-)、開発環境がインストールされていればデバッグするかといったダイアログが表示されたりします。サービスプロセスの場合はダイアログが出せないため、イベントログになんらかのログが残る事(残るように実装されている事)が多いと思います。 アプリケーション自身がうまくハンドリングできなかったとしても、基本的にはシステムがプロセスの異常終了をログオンユーザーに伝えようとします。まれになんの痕跡も残さず終了してしまう事もありますが、それはシステムが用意している異常終了時の処理がなんらの理由で実行できなかったか(できないほど深刻な異常だった、もしくはデバッガなどの介入を防ぐようにアプリケーションが作られていた、など)、異常終了に見えても実際には正常終了だったか、後は電源ケーブルが抜けたか 🙂 くらいしか考えられません。 – ハング (hang) “止まる” という現象、応答がなくなるというトラブルです。ハングには2種類あり、それぞれコールドハング(cold hang)とビジーハング(busy hang)と呼ばれます。 コールドハングは、内部でデッドロック(Aの処理がBの処理完了を待っているが、Bの処理もAを待っているといった状態)などが発生し、処理はまったく行っていないが応答を停止している状態です。 これに対してビジーハングは、その名の通り CPU がガンガン回っているだけで応答が返ってこない状態です。無限ループしている事もありますし、他の処理が忙しくて応答を返せないといった状態もあります。 – 例外(exception)もしくは意図しない動作 クラッシュするわけでもなく、ハングするわけでもない、しかし例外が発生したり、意図しない結果となるという場合は “それ以外” に分類してみました 🙂 。”トラブル” とは基本的に “意図しない現象の発生” かと思いますのでこういった分類名をつけました。 ここでは3つの分類を挙げてみました。 運用中に突然発生したトラブルにあたる時は、まずはこのどれか、正確には前者二つがどこかで起きていないか、を私は疑います。これは小さなデスクトップアプリケーションでも、何台ものマシンで構成されたクラスタシステムでも同様です。これは前者二つであれば “いつもの手順” が使えるからなのですが、それについてはまた回を改めてまとめてみたいと思います。 d99 でした。


マイクロソフト サポートでの私の仕事

こんにちは!d99 です。よくよく考えてみると、技術的な分野をお伝えしないといったいどんなブログなのかまったく分からないですよねぇ。というわけで、前回のご挨拶に引き続き自己紹介を。 私が所属するサポートチームでは、Web 系のシステム、つまり Internet Infomation Service (IIS)、その上で動く ASP、ASP.NET を核に、関連するサーバ製品群を担当しています。こういったコードを書くとエラーになる、意図した動きをしない、こういう公開関数はあるか、といった開発フェイズでのご質問や、突然ユーザーアプリケーションが落ちた、サーバから応答がない、負荷が跳ね上がったというような運用フェイズでのご質問を頂きます。 そんなチームで、私は監察医のような事を主にやっています。 死体を見て死因を判断する。つまりシステムに問題が発生した際に、その時の情報を解析し、問題の原因にアタリを付けるという事です。いわゆる運用デバッグに当たるのですが、マイクロソフトサポート メニューの中でも上位のご契約が必要な事、技法に関する日本語のドキュメントが少ない事などから、それほど一般的には知られていないように思います。 私はあまり設計やコーディングなどの高尚なお話し等には詳しくないのですが、サポートでの経験からシステムのトラブルシューティングについてや (troubleshooting タグ)、Web サーバのダンプファイルばかり年間数百本ほど見ていますのでその技術について(debugging タグ)、少しお話しができるかと思います。 また、そんな私だけでは心もとないので、今回ブログを始めるにあたり Doug、Tess、Todd、Jerry などのいわば “デバッグマスター” のような人達や 、Scott、Maoni など開発のアーキテクト達に、彼らのブログエントリの翻訳をしてもよいか聞いてみました。皆に快諾してもらえたので、彼らのエントリを日本語化しつつ(恐らく私の訳はかなり意訳になると思いますが)、日本でよく見られた問題などをご紹介できればと考えています。また、こういったトラブルシューティング方法があるといいなぁといったアイディアなどがありましたら是非教えてください。 よろしくお願いします。 d99 でした。


ご挨拶

初めまして!d99 です。 私は マイクロソフト株式会社 グローバル テクニカル サポート センターのエンジニアです。技術専門分野や得意技 🙂 などの細かい点については、これからここでお伝えしていきたいと考えています。 今現在、日本のマイクロソフトで、エンジニアという単語が付く職種の人間が blog を書いているのはもしかすると珍しいのかもしれません。そんな事もあってやや緊張気味ですが、まぁあまり肩肘張らず気楽な感じで続けていければいいな、と思っています。 ちなみにペンネームなのはちょっと恥ずかしいから、、、というだけなので、いずれはどこの誰なのかをこっそり about あたりに書いておくかもしれません。 これからもよろしくお願いします。d99 でした。