IIS(Internet Information Services) 7.0 が備える診断機能の1 つに、エラーコードまたは所要時間によってトリガされるエラーを定義する機能があります。この機能は、アプリケーションごと、またはURL ごとに構成できます。生成される失敗した要求トレースログには、失敗した要求のイベントの記録が含まれているため、サーバーのボトルネックをすばやく識別するのに役に立ちます。

 ここでは,失敗した要求トレースについて解説します。まずは、失敗した要求トレースのトリガ条件の背後にある詳細について考えてみましょう。

失敗した要求トレースのトリガ条件の背後にある詳細事項

 IIS 7.0 の失敗した要求トレースでは、次の3 つのキー条件に従ってエラーをトリガすることができます。ステータス/サブステータスコード(Status/Substatus codes)、所要時間(Time Taken)、およびイベントの詳細度(Event Verbosity)です。1 つ覚えておくべきことは、トリガ全体は、定義されているすべてのエラー条件をOR で判断することです。

 たとえばstatusCodes="400-599"、timeTaken="00:00:10"、およびverbosity="Error"のように、3 つの条件をすべて定義した場合、これらの条件の1 つ目に達した時点で、ワーカープロセスは、「失敗した」要求のトレースログをフラッシュします。最終的には要求にhttp ステータスコード500 のエラーが発生しても、この処理に30 秒かかった場合、実際にはtimeTaken 値によってトリガされます。<failedRequest failureReason ="<reason>"> 属性によって、どのエラー条件によってフラッシュがトリガされたかが具体的に通知されます。

 トレースログに書き込まれるイベントは、障害として判断されたイベントです。これが意味するのは、ステータス/サブステータスコードのエラー条件(failureReason= "STATUS_CODE")によってのみ、開始から終了までの全要求がキャプチャされるということです。timeTaken トリガの場合は、制限時間までに受信したすべてのイベントが表示されます。前の例では、10 秒のエラー条件によって、その10 秒制限までのイベントがIIS によってキャプチャされ、それ以降のイベントはキャプチャされません。

 同じことが、イベントの詳細度(verbosity)のトリガにも当てはまります。イベントの詳細度が現在のトリガ条件に等しいか、または厳しい最初のイベントを受信すると、その時点までに受信したすべてのイベントがフラッシュされます(トリガイベントを含む)。たとえば、トリガ条件でverbosity="WARNING"の場合にfoobar.aspx をフラッシュするようにします。詳細度レベルでは、設定したエラーレベルより高いレベルがすべて含まれるため、詳細度レベルがWARNING、ERROR、またはCRITICAL ERROR である、そのURL への要求に対する最初のトレースイベントを受信すると、IIS はfoobar.aspx のログをフラッシュします。詳細度レベルのエラー条件がERROR である場合、最初のERROR またはCRITICAL ERROR トレースイベントの受信時に、IIS はフラッシュします。

 ここでの目的は、エラー条件を定義する柔軟な手段を提供し、ある条件に達したときにフラッシュを実行することです。ステータスコード(Status Code)と所要時間(Time Taken)が、現在最も多用されますが、詳細度(Verbosity)もアプリケーションエラーをキャプチャして、「製品データベースに接続できません」というメッセージを表示するカスタマイズされた200のOK をクライアントに返すときに役に立ちます。コード内にERROR トレースイベントを入れ、詳細度(verbosity)のエラー条件を構成してこれらのログをキャプチャし、これらのエラーの診断に役立ててください。