troushoo

HTTP.sysのイベントトレース (ETW)

【概要】
HTTP.sysのイベントトレース(=ETW)を用いて、HTTP通信のトラブルシューティングを行う方法を紹介します。
ETWはWindowsに備わっている機能ですので、追加ソフトのインストールなくトラブルシューティングができます。

【内容】
<ETWとは>
ETWはWindowsに備わっている機能で、Event Tracing for Windowsの略です。
少ないオーバーヘッドで、アプリやドライバーのトレース情報を取得することができるメカニズムです。
Windowsのインボックスのツール自身もETWを使用しており、一例は”リソースモニター(resmon.exe)”です。
resmon.exeはETWで取得した情報をもとにパフォーマンス情報を表示しています。
90-2_1

<HTTP.sysとは>
HTTP.sysはHTTP通信の際に使用される、カーネルモードのコンポーネントです。
したがって、HTTP.sysのトレース情報がわかれば、HTTP通信のトラブルシューティングに役に立ちえます。
ちなみに、HTTP.sysはC:\Windows\System32\Drivers\https.sysにあります。
HTTP.sys


<http.sysのETWを利用したトラブルシューティング例>
ASP.NETのWebサイトを運営しており、そのサイトのユーザーから「つながらない」と言われた場合を考えます。
このときに、HTTP.sysのETWを使ってトラブルシューティングを行う例を記載します。

1. HTTP.sysのETWトレースの取得を開始します。
管理者権限のコマンドプロンプトで以下のコマンドを実行すると、HTTP.sysのETWトレースの取得を開始できます。
logman start httptrace –p Microsoft-Windows-HttpService 0xFFFF –o httptrace.etl –ets
90-3
引数の意味は以下です。

引数 意味
httptrace トレースの名前。
任意の名前に変更可能。
-p Microsoft-Windows-HttpService 0xFFFF HTTP.sysのすべてのETWトレースを取得するという意味。
-o httptrace.etl トレース情報の出力ファイルがhttptrace.etlになるという意味。
httptrace.etlは任意の名前に変更可。
-ets トレースをすぐに開始するという意味。


2. 問題のサイトに接続し、”つながらない”問題を再現させます。

3. HTTP.sysのETWトレースの取得を終了します。
管理者権限のコマンドプロンプトで以下のコマンドを実行すると、HTTP.sysのETWトレースの取得を終了できます。
logman stop httptrace –ets
logman stop
引数の意味は以下です。

引数 意味
httptrace ETWトレース開始時につけたトレース名。
-ets トレースをすぐに終了するという意味。


4. etlファイルを開きます。
作成したetlファイルを開きます。
etlファイルはイベントビューアー(=eventvwr.msc)で開けます。
イベントビューアーを開き、”イベント ビューアー (ローカル)”を右クリックし、”保存されたログを開く”をクリックします。
保存されたログを開く
今回のログを見ると警告一つあり、”HTTP タイムタウト トレース タスク”でした。
90-8_1
すなわち、コネクションがタイムアウトしていたことがわかりました。
よって、これが、サイトにつながらなかった根本原因である可能性があります。

<トラブルシュート>
今回のトラブルは、コネクションがタイムアウトしていたことが原因であることがわかりました。
よって、タイムアウト値を伸ばしてみて、現象が解決するかを調べてみます。

タイムアウト値は以下のコマンドで表示・変更することができます。

タイムアウト値の表示
netsh http show timeout
タイムアウト値が120秒であることがわかります。
タイムアウト値の表示

タイムアウト値を240秒に変更 (管理者権限が必要)
netsh http add timeout timeouttype=idleconnectiontimeout value=240
タイムアウト値を変更

上記の変更後、”つながらない”問題が解消できたかを確認します。

リンク
・Scenario 1: HTTP Timeout Example Using ETW Tracing and Netsh Commands (Windows) (英語)
本記事の情報ソースです。
http://msdn.microsoft.com/en-us/library/windows/desktop/cc307237(v=vs.85).aspx
・Event Tracing in HTTP.sys (英語)
マイクロソフトのエンジニアによる、HTTP.sysのETWについてのブログです。
http://blogs.msdn.com/b/wndp/archive/2007/01/18/event-tracing-in-http-sys-part-1-capturing-a-trace.aspx
http://blogs.msdn.com/b/wndp/archive/2007/01/25/event-tracing-in-http-sys-part-2-anatomy-of-an-event.aspx
http://blogs.msdn.com/b/wndp/archive/2007/02/01/event-tracing-in-http-sys-part-3-typical-request.aspx


  1. 2012/11/19(月) 16:11:37|
  2. ツール
  3. | トラックバック:0
  4. | コメント:0
<<Visual Studioの役に立つショートカット - ナビゲーション編 | ホーム | Visual Stdio 2012でサンプルコードのダウンロード>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://troushoo.blog.fc2.com/tb.php/90-90a1d5f9
この記事にトラックバックする(FC2ブログユーザー)

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

ツール (92)
ネットワーク (76)
Visual Studio (56)
SOS・Psscor2/Psscor4 (25)
WinDbg (25)
Linux (23)
Azure (17)
Tips (20)
英語 (1)
About Me (1)
未分類 (0)

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する