Устранение неполадок с элементами кэша в ARR версии 2.0 или более поздней

Применимо к: Службы IIS

Обзор

В этом пошаговом руководстве вы узнаете, как отслеживать запрос по мере его прохождения через ARR и отправки на сервер следующего уровня, а также просмотреть сведения, которые можно получить, чтобы определить, куда был отправлен запрос и откуда он был обслужен.

Средства, используемые в этом средстве устранения неполадок

Общие сведения об архитектуре фермы

Первым шагом является понимание архитектуры среды, включая следующее.

  • Топология фермы ARR (количество серверов, способ настройки маршрутизации, другие устройства)
  • Правила перезаписи URL-адресов на месте

В этом пошаговом руководстве можно использовать следующую конфигурацию для трассировки запроса.

На схеме показан дочерний узел, родительский узел и сервер-источник со стрелками, указывающими на промахи и запросы кэша.

Конфигурация кэша дисков

В следующем фрагменте кода показан настроенный локальный диск с максимальным размером 100 ГБ.

<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 Advanced Logging
    • Встроенное ведение журнала 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.

Тип Запись Подробно
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-Forwarded-For, X-ARR-ClientCertи X-ARR-LOG-ID, имена были настроены в параметрах прокси-сервера фермы серверов.

Заголовок Подробно
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 Advanced Logging. С помощью расширенного ведения журнала можно добавлять настраиваемые поля ведения журнала на основе заголовков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 по умолчанию.

Примечание.

В настоящее время ArrHelper не поддерживается корпорацией Майкрософт.

Повторите шаги 1 и 2 для нескольких уровней кэша

Если на родительском узле W2K8WEBSERVER2 сервера настроены функции ARR и кэширования, может потребоваться проверка IISLOGS или FREB, чтобы узнать, был ли кэш Попадание или Промах, и решить, куда действовать в зависимости от состояния записи этого кэша.

Запрос перенаправлен на сервер-источник

Этот шаг можно рассматривать как обычный HTTPS-запрос и отслеживать с помощью следующих средств:

  • Монитор сети — записывает трассировки на сервере-источнике для проверки получения запроса.
  • Журналы IIS — проверяет журналы IIS на наличие кодов http-ответов для отслеживаемого содержимого.
  • Журналы IIS FREB . Если запрос был найден в трассировке сети и код ответа HTTP не был указан в формате 200, возможно, вам потребуется снова использовать FREB для устранения проблемы.

Устранение неполадок кэша

Проверка заголовков Cache-Control

Проверьте Cache-Control заголовки, полученные от клиента. Это можно сделать вместе с проверкой правил управления кэшем, так как заголовки можно настроить для переопределения заголовков.

Просмотр правил 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: 

Дополнительная информация