ARR バージョン 2.0 以降のキャッシュ項目のトラブルシューティング
適用対象: インターネット インフォメーション サービス
概要
このチュートリアルでは、ARR を通過し、次層サーバーに送信されるときに要求をトレースする方法を学習し、取得できる情報を確認して、要求が送信された場所と、その要求の送信元を特定します。
このトラブルシューティング ツールで使用されるツール
- ARR ヘルパー
- 失敗した要求トレース (FREB)
- IIS 詳細ログ
- ネットワーク モニター
ファームのアーキテクチャを理解する
最初の手順は、次のような環境のアーキテクチャを理解することです。
- ARR ファーム トポロジ (サーバーの数、ルーティングの構成方法、その他のデバイス)
- URL 書き換えルールの設定
このチュートリアルでは、次の構成を使用して要求をトレースできます。
ディスク キャッシュの構成
次のコード スニペットは、最大サイズが 100 GB のローカル ドライブが構成されていることを示しています。
<diskCache>
<driveLocation path="E:\temp$\arrcache" maxUsage="100" />
</diskCache>
グローバル キャッシュ制御規則
この規則は、キャッシュ制御ディレクティブが存在しない場合、60 分間キャッシュとして定義されます。
<rule name="ARR_CacheControl_b5aec65d-6327-407f-a28c-b34e48c5cda2" enabled="true" patternSyntax="Wildcard">
<match url="*" />
<serverVariables>
<set name="ARR_CACHE_CONTROL_OVERRIDE" value="0,max-age=3600" />
</serverVariables>
</rule>
データ収集計画を作成する
このセクションでは、ARR を通過する際のキャッシュ ヒットとミスのフローについて説明し、要求の調査に使用できるツールまたはログを特定します。 次の手順では、参照として提供される構成と、各手順で使用されるツールを使用して、以前にキャッシュされていないコンテンツの要求フローについて説明します。
要求されたコンテンツがローカルに見つかりません (メモリ内でも、子ノード上のディスク上にも見つかりません)。
- FREB ログ
- IIS 組み込みのログ記録
- ネットワーク モニター
要求は、次の層キャッシュ ノード (親ノード) に転送されます。
- FREB ログ
- IIS 詳細ログ モジュール
- IIS 組み込みのログ記録
- ネットワーク モニター
要求されたコンテンツは、次の階層キャッシュ ノード (メモリ内でもディスク上にも) には見つかりません。 キャッシュ階層に基づいてポイント 2 を必要な回数繰り返します。
要求は配信元サーバーに転送されます。
- FREB ログ
- IIS 組み込みのログ記録
- ネットワーク モニター
データの収集
要求されたコンテンツがローカルに見つかりません (メモリ内でもディスク上にも見つかりません)
ここでは、IIS ログまたは FREB ログのいずれかでキャッシュ ヒットまたはミスを識別できます。 FREB ログには、要求がルーティングされた場所などの追加の詳細が提供されます。これは、複数のダウン レベル サーバーがある場合に重要です。
IIS ログ エントリ - cs-uri-query フィールドには、キャッシュ Hit or Miss と要求の GUID を識別する次のエントリが表示されます。これは、ダウン レベル サーバーでの要求を識別するために使用できます。
X-ARR-CACHE-HIT=0
0 = Cache miss, 1 = Cache hit
X-ARR-LOG-ID=62a3161c-b4f5-408e-9ce7-55d25c018aea
Guid identifying this request. This can be used to track as the request is passed to Parent nodes.
FREB ログ エントリ - キャッシュ ミスは エントリ ARR_DISK_CACHE_GET_FAILED
によって検出されます。
型 | エントリ | 詳細 |
---|---|---|
r | ARR_DISK_CACHE_GET_FAILED警告 | FilePath="\?\C:\ARRCache\localhost\iisstart.htm.full", ErrorCode="システムは指定されたファイルを見つけることができません。 (0x80070002)", IsRangeEntry="false", RangeOffset="0", RangeSegmentSize="0" |
要求のルーティング先のサーバーを特定します。 サーバーに送信される要求を確認します W2K8WEBSERVER2
。これは、データ レビューの次のレベルのサーバーになります。
型 | エントリ | 詳細 |
---|---|---|
i | ARR_SERVER_ROUTED | RoutingReason="LoadBalancing", Server="W2K8WEBSERVER2", State="Active", TotalRequests="8", FailedRequests="0", CurrentRequests="1", BytesSent="1127", BytesReceived="6441379", ResponseTime="31351" |
転送要求には、次のヘッダーが追加されます。 一部の名前が、X-ARR-ClientCert
、X-ARR-LOG-ID
、 などのX-Forwarded-For
既定の名前とは異なる場合、名前は Server Farm プロキシ設定でカスタマイズされています。
ヘッダー | 詳細 |
---|---|
GENERAL_SET_REQUEST_HEADER | HeaderName="Max-Forwards", HeaderValue="10", Replace="true" |
GENERAL_SET_REQUEST_HEADER | HeaderName="X-Forwarded-For", HeaderValue="127.0.0.1:62489", Replace="true" |
GENERAL_SET_REQUEST_HEADER | HeaderName="X-ARR-SSL", HeaderValue="", Replace="true" |
GENERAL_SET_REQUEST_HEADER | HeaderName="X-ARR-ClientCert", HeaderValue="", Replace="true" |
GENERAL_SET_REQUEST_HEADER | HeaderName="X-ARR-LOG-ID", HeaderValue="fe9d20da-a571-4451-8ef3-0e7faf1a463a", Replace="true" |
要求は次の層キャッシュ ノード (親ノード) に転送されます
前の手順では、このサーバーを として W2K8WEBSERVER2
識別しました。 この手順では、このサーバー上の次のデータを調べることができます。 使用できるデータ ポイントは複数あります。 を使用すると X-ARR-LOG-ID
、要求がこのサーバーに到達したかどうかを識別できます。
FREB ログ - 要求は、子ノードから送信された によって X-ARR-LOG-ID
識別できます。 は fe9d20da-a571-4451-8ef3-0e7faf1a463a
、前の手順で識別されました。
ヘッダー | 詳細 |
---|---|
GENERAL_REQUEST_HEADERS | Headers="Connection: Keep-Alive Accept: */* Host: localhost Max-Forwards: 10 X-Original-URL: /iisstart.htm X-Forwarded-For: 127.0.0.1:62489 X-ARR-LOG-ID: fe9d20da-a571-4451-8ef3-0e7faf1a463a |
IIS 詳細ログ モジュール - 高度なログ記録を使用して、ヘッダーX-Forwarded-For
に基づいてカスタム ログ フィールドを追加し、X-ARR-LOG-ID
フィルター処理を使用して、これらのヘッダーが存在する場合にのみログを記録できます。
#Software: IIS Advanced Logging Module
#Version: 1.0
#Start-Date: 2009-10-16 18:42:51.494
#Filter: ((ARRLogID isPresent ) || (xforward isPresent ))
#Fields: date time cs-uri-stem cs-uri-query s-contentpath sc-status s-computername cs(Referer) sc-win32-status sc-bytes cs-bytes X-ARR-LOG-ID X-Forwarded-For
2009-10-16 18:51:29.983 /iisstart.htm - "C:\inetpub\wwwroot\iisstart.htm" 200 "W2K8WEBSERVER2" - 0 1680 219 "fe9d20da-a571-4451-8ef3-0e7faf1a463a" "127.0.0.1:62489"
ネットワーク モニター - トレースを使用して、 X-ARR-LOG-ID
を特定し、 X-Forwarded-For
特定の要求をトレースする場合は を識別します。
ARR ヘルパー - このモジュールは、ヘッダーをX-Forwarded-For
フィールドにC-IP
追加し、ヘッダーcs-uri-query
をX-ARR-LOG-ID
既定の IIS ログのフィールドに追加します。
注:
ArrHelper は現在、Microsoft ではサポートされていません。
複数レベルのキャッシュに対して手順 1 と手順 2 を繰り返す
サーバー親ノードW2K8WEBSERVER2
が ARR およびキャッシュ機能を使用して設定されている場合は、IISLOGS または FREB をチェックして、キャッシュヒットまたはミスがあるかどうかを確認し、そのキャッシュのエントリ状態に応じて続行する場所を決定する必要がある場合があります。
要求が配信元サーバーに転送される
この手順は、通常の HTTPS 要求として扱われ、次のツールを使用して追跡できます。
- ネットワーク モニター - 配信元サーバー上のトレースをキャプチャして、要求の受信を確認します。
- IIS ログ - トレースするコンテンツの HTTP 応答コードについて IIS ログを確認します。
- IIS FREB ログ - 要求がネットワーク トレースで見つかり、HTTP 応答コードが 200 でなかった場合は、FREB をもう一度使用して問題のトラブルシューティングを行う必要があります。
キャッシュ エラーのトラブルシューティング
Cache-Control ヘッダーを確認する
クライアントから受信 Cache-Control ヘッダーを確認します。 これは、ヘッダーをオーバーライドするようにヘッダーを構成できるため、キャッシュコントロールルールのチェックと組み合わせて行うことができます。
ARR の Cache-Control 規則を確認する
ARR キャッシュが有効になっているかどうかを確認するには、ARR のキャッシュ制御規則を確認します。
HTTP.SYS 設定を確認する
カーネル内の HTTP.sys によってコンテンツがキャッシュされない理由の詳細については、「 HTTP.sys がコンテンツをキャッシュしないインスタンス」を参照してください。
ディスク キャッシュエラー
ARR は、ディスク障害が発生したときにイベントをアプリケーション イベント ログに記録し、ディスクを異常としてマークします。
Log Name: Application
Source: Application Request Routing
Date: 11/2/2009 5:26:59 PM
Event ID: 1006
Task Category: None
Level: Warning
Keywords: Classic
User: N/A
Computer:
Description: Drive with path '\?\E:\temp$\arrcache\' is being marked unhealthy. The data contains the error code.
Event Xml: