針對 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 欄位中找到下列專案,以識別快取點擊或遺漏,以及要求的 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
快取遺漏。
類型 | Entry | 詳細資料 |
---|---|---|
r | ARR_DISK_CACHE_GET_FAILED警告 | FilePath=“\?\C:\ARRCache\localhost\iisstart.htm.full”, ErrorCode=“系統找不到指定的檔案。 (0x80070002)“, IsRangeEntry=”false“, RangeOffset=”0“, RangeSegmentSize=”0” |
識別要求路由傳送至的伺服器。 觀察傳送至伺服器 W2K8WEBSERVER2
的要求,這會是下一層伺服器進行數據檢閱。
類型 | Entry | 詳細資料 |
---|---|---|
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
預設名稱不同,伺服器陣列 Proxy 設定中已自定義名稱。
頁首 | 詳細資料 |
---|---|
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
欄位,並將 X-ARR-LOG-ID
標頭新增至 cs-uri-query
預設 IIS 記錄的欄位。
注意
Microsoft目前不支援 ArrHelper。
針對多個快取層級重複步驟 1 和 2
如果伺服器父節點 W2K8WEBSERVER2
是使用ARR和快取功能設定的,您可能需要檢查IISLOGS或 FREB,以查看是否有快取點擊或遺漏,並決定根據該快取的項目狀態繼續進行的位置。
要求會轉送至源伺服器
此步驟可以視為一般 HTTPS 要求,並可透過下列工具進行追蹤:
- 網路監視器 - 擷取源伺服器上的追蹤,以確認收到要求。
- IIS 記錄 - 檢查 IIS 記錄中是否有您要追蹤之內容的 HTTP 回應碼。
- IIS FREB 記錄 - 如果在網路追蹤中找到要求,且 HTTP 回應碼不是 200,您可能想要再次使用 FREB 來針對問題進行疑難解答。
針對快取失敗進行疑難解答
檢查快取控件標頭
確認從用戶端接收的 Cache-Control 標頭。 這可以搭配檢查快取控制規則來完成,因為標頭可以設定為覆寫標頭。
檢閱ARR中的快取控制規則
檢查 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: