IIS トラブルシューティング入門 - 目次
私のトラブルシューティング経験 ~ MS のエンジニアとしてたくさんの重大案件に対応しました
私は以前、マイクロソフトのサポート部のリード・エンジニアとして、 たくさんの IIS の障害を解決してきました。
私はサポート部のテクニカル・リード (技術主任) という肩書きもありましたが、 同時に IIS の CPR というチームにも所属していました。
CPR というのは Critical Problem Resolution (=重大問題解決) の略です。
マイクロソフトのサポートの部には、通常のサポートエンジニアチームの他に CPR というチームがあり、特に重大な問題については CPR のエンジニアがそれを対応します。
いわば、警察組織に例えて言えば CPR は「特殊部隊」といえます。
ちなみに、CPR に所属するエンジニアを、エスカレーション・エンジニアといいます。
私が MS に在籍していた当時、日本の IIS CPR は私一人であった時期が長かったため、 かなりの重責、重圧を背負いながら、様々な案件に対応していました。
そのせいで (?)、ストレス発散の酒量も増えましたが・・・ (苦笑)
調査の基本はいつも同じ。この資料ではその基本をご説明します
個別案件における対応はそれぞれの案件ごとに変わってきますが、 基本的な対応方法はいつも同じです。
当サイトではそのような基本に焦点をあてて、説明していきます。
応用のきく方法ですから、IIS を使っていない人にも役に立つと思います。
1. いろいろなツール
デバッガの利用
- デバッガとは?
- デバッガの入手方法とインストール
- シンボル情報
- CDB
- WinDbg
- ADPlus (AD+)
- Debug Diagnostic Tool
- SOS ~ .NET Debugger Extension
- Windbg を用いたリモートデバッグ
各種診断ツール
上で紹介した Debugging Tools for Windows に含まれていないものでも、システム解析に大変役に立つツールが マイクロソフトから提供されています。
2. アプリケーションの実行と障害
この章では、始めにプログラムが実行する仕組みについて概要を説明します。 それから開発者が犯しやすい誤りについて理解し、障害発生時に当たりを付けやすくします。
プログラム実行の仕組み
デバッガを使ってプログラムの状態を診断する際に、プログラム実行の仕組みを少し 知っておいたほうが良いです。
典型的なバグ
少し規模が大きくなってくると、開発者と運用管理する人が異なる場合が普通です。 問題解決する場合は、運用管理者も開発者が犯しやすい誤りについて理解している方が良いです。
3. デバッグの実践
障害箇所を切り分ける
デバッグの基本
- ブレークポイント
- スタックバックトレース
- x64 で引数を確認する
- 戻り値を確認する
- 例外
- WOW64 上のデバッグ
- LIST_ENTRY に関するデバッグコマンド
- ヒープコラプションのデバッグ手順 ~ 例外 STATUS_HEAP_CORRUPTION (0xc0000374)
デバッガによる解析
- メモリダンプを開く
- アクセス違反 - まずはスタックバックトレースから
- デッドロック
- ハングアップ
- CPU 100% となりハングアップ
- メモリの確認
- ページヒープ (PageHeap) によるヒープオーバーランの検出
4. プロアクティブなトラブルシューティング
参考資料
トラブルシューティングをする上で参考になる書籍は以下の通りです。
オススメ バグのないコードを 書くための姿勢を学べます。 ちょっと古い本ですが、他に代わる本がありません。 「どうしたら自動的にバグを捕まえられたか」、常に考える習慣が身につきます |
ジョンロビンスのデバッグ本の翻訳では、
最新版になります デバッグの入門書です |
ジョンロビンスの最新
デバッグ本の原著 英語が余程苦手じゃなければ、左の邦訳より こちらがおすすめです |
オススメ MS の開発者が書いた 最高レベルのデバッグ本です。 |