Share via


【IIS7】 トレースと診断 Part I

色々なことが怒涛のようにあって、あっという間に時間が経ってしまいました。
MMS2006 で San Diego へ行ったと思ったらG/Wで、5月入ったら 式根島 へ船で行き、来週は MMS2006 Japan で話してきます。同僚の高添も MMS2006 Japan で登場するらしいです。そして 5月末 から怒涛の IT Pro 道場 のロード が始まります。IT Pro 道場、是非 来てくださいね!一緒に色々なことを話しましょう。今日 TechNet FlashTechNet オンライン で道場サイトも公開ですからちょっとフライングしておきます。

ということで IIS7 の話を書くゆとりが持てなかったのですが、6月に入ると IIS7 を話す機会が何度かありそうな雰囲気なので少しずつ勘を戻す意味でまた書いていこうと思います。今回から何回か(イベント盛り沢山なんで飛び石になりそうです)は強化されるトレースの話を書きましょう。

まずは新しいIISの管理ツールの機能になります。

最新のビルドを確認の上書きたかったんですが、それは別の機会にしてとりいそぎ概念的なところからいきます。大概 いいトレースとか内部的な状況把握をする機能が実装される時、管理ツールが容易に呼び出せる状態を公開する API ができる傾向があると私は思ってます。名前変わっていないといいんですが、RSCA(Runtime State & Control API:名前変わっているのを確認したらまたUpdateします。)というのがIIS7でも実装される予定です。このAPIが存在することによってワーカープロセス内の現在実行中のリクエストの情報を公開することが可能になります。

具体的には管理ツール内の Health & Diagnostics 項目で WorkerProcess の小項目を選択します。これで選択したワーカープロセスに関してアプリケーションプール、プロセスID、状態(実行中とか)、使用しているCPUの%、使用しているメモリーなどが表示できます。これだけでも相当以前より便利なんですが、さらにタスクの中から View Current Requests(英語表記で恐縮ですが)を実行するとサイトのID(Default Web Siteは1になる奴)、なんと実行中のURL、Verb(GETとかPOSTとか)、クライアントのIP、実行中のIIS7モジュール(IsapiModuleとか)、実行経過時間が見れます。

この内、URL・実行経過時間がハングものにはかなり有力な手掛かりになる情報です。アプリケーションでロギングをカスタムで実装していない場合にはIIS6以前ではADPlusなどのダンプツールを使ってダンプするのが実行環境での調査方法の主力であり、その後便利な機能が登場してはいるものの、ここまで便利ではないと思います。RSCAはある意味パフォーマンスカウンターの仕組みに似ていますが、管理ツールでここまでGUI表示できる上、API公開されているものをプログラムで制御すれば実行情報を記録に残す仕組みを作るのが簡単そうだなと思っていただけるのではないでしょうか。

これが実行環境での運用で大きな意味を為す一つの改善事項です。開発プロジェクト中でも工夫次第で便利に使える部分もあると思います。ただ、次回以降でご紹介するようにこれだけではないのがまたIIS7のすごいとこです。おまけにもう既にご紹介しているように独自のサーバーコアコンポーネントを開発すれば独自のログ機能をサーバーに作ることすら可能なんです。

ということで、久しぶりに IIS7 書いてみました。