Solução de problemas de itens de cache na versão 2.0 ou posterior do ARR

Aplica-se a: Serviços de Informações da Internet

Visão Geral

Neste passo a passo, você pode aprender a rastrear uma solicitação à medida que ela passa pelo ARR e é enviada para um servidor de próxima camada e examinar as informações que podem ser adquiridas para determinar de onde a solicitação foi enviada e de onde ela foi atendida.

Ferramentas usadas nesta solução de problemas

Entender a arquitetura do farm

A primeira etapa é entender a arquitetura do ambiente, incluindo o seguinte.

  • Topologia do ARR Farm (quantos servidores, como o roteamento está configurado, outros dispositivos)
  • Regras de reescrita de URL em vigor

Neste passo a passo, você pode usar a configuração a seguir para rastrear uma solicitação.

Diagrama mostra um nó filho, um nó pai e um servidor de origem com setas para indicar erros e solicitações de cache.

Configuração de cache de disco

O snippet de código a seguir mostra uma unidade local com um tamanho máximo de 100 GB configurado.

<diskCache> 
<driveLocation path="E:\temp$\arrcache" maxUsage="100" />            
</diskCache>

Regras globais de controle de cache

Essa regra é definida como cache por 60 minutos quando não existe nenhuma diretiva de controle de cache.

<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>

Criar um plano de coleta de dados

Esta seção orientará você pelo fluxo de acertos e erros de cache à medida que eles transitam pela ARR e identificará quaisquer ferramentas ou logs que você possa usar para investigar as solicitações. As etapas a seguir descrevem o fluxo de solicitação de conteúdo não armazenado em cache anteriormente usando a configuração fornecida como nossa referência e as ferramentas usadas em cada etapa.

  • O conteúdo solicitado não é encontrado localmente (nem na memória nem no disco no nó filho).

    • FREB Logs
    • IIS interno em log
    • Monitor de Rede
  • A solicitação é encaminhada para o próximo nó de cache de camada (nó pai).

    • FREB Logs
    • módulo Registro em Log Avançado do IIS
    • IIS interno em log
    • Monitor de Rede
  • O conteúdo solicitado não é encontrado no nó de cache da próxima camada (nem na memória nem no disco). Repita o ponto 2 quantas vezes for apropriado com base na hierarquia de cache.

  • A solicitação é encaminhada para o servidor de origem.

    • FREB Logs
    • IIS interno em log
    • Monitor de Rede

Coletar os dados

O conteúdo solicitado não é encontrado localmente (nem na memória nem no disco)

Aqui você pode identificar um acerto ou erro de cache nos logs do IIS ou freb. Os logs freb fornecem detalhes adicionais, como para onde a solicitação foi roteada, o que é importante se houver vários servidores de nível inferior.

Entrada de log do IIS – Você encontrará as seguintes entradas no campo cs-uri-query que identifica o cache Hit ou Miss e o GUID para a solicitação, que pode ser usado para identificar a solicitação em servidores de nível inferior.

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.

Entrada de log FREB – A falha de cache é encontrada pela entrada ARR_DISK_CACHE_GET_FAILED.

Tipo Entrada Detalhes
r aviso ARR_DISK_CACHE_GET_FAILED FilePath="\?\C:\ARRCache\localhost\iisstart.htm.full", ErrorCode="O sistema não pode localizar o arquivo especificado. (0x80070002)", IsRangeEntry="false", RangeOffset="0", RangeSegmentSize="0"

Identifique o servidor para o qual a solicitação é roteada. Observe a solicitação que está sendo enviada ao servidor W2K8WEBSERVER2, que será o próximo servidor de nível para revisão de dados.

Tipo Entrada Detalhes
Eu ARR_SERVER_ROUTED RoutingReason="LoadBalancing", Server="W2K8WEBSERVER2", State="Active", TotalRequests="8", FailedRequests="0", CurrentRequests="1", BytesSent="1127", BytesReceived="6441379", ResponseTime="31351"

Os cabeçalhos a seguir são adicionados à solicitação de encaminhamento. Se alguns nomes forem diferentes dos nomes padrão, como X-Forwarded-For, X-ARR-ClientCerte X-ARR-LOG-ID, os nomes serão personalizados nas configurações de proxy do Server Farm.

Cabeçalho Detalhes
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"

A solicitação é encaminhada para o próximo nó de cache de camada (nó pai)

Na etapa anterior, você havia identificado esse servidor como W2K8WEBSERVER2. Nesta etapa, você pode examinar os dados a seguir neste servidor. Há vários pontos de dados que podem ser usados. Usando X-ARR-LOG-ID, você pode identificar se a solicitação chegou a esse servidor.

Logs FREB – A solicitação pode ser identificada pelo X-ARR-LOG-ID nó enviado do filho. O fe9d20da-a571-4451-8ef3-0e7faf1a463a foi identificado na etapa anterior.

Cabeçalho Detalhes
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

Registro em Log Avançado do IIS Módulo – usando log avançado, você pode adicionar campos de log personalizados com base nos cabeçalhos X-Forwarded-For eX-ARR-LOG-ID, em seguida, usar a filtragem para fazer logon somente quando esses cabeçalhos estiverem presentes.

#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"

Monitor de Rede – use o rastreamento para identificar o X-ARR-LOG-ID e X-Forwarded-For se você quiser rastrear uma solicitação específica.

Auxiliar do ARR – Este módulo adiciona o X-Forwarded-For cabeçalho ao C-IP campo e ao X-ARR-LOG-ID cabeçalho ao cs-uri-query campo dos logs de IIS padrão.

Observação

No momento, o ArrHelper não tem suporte da Microsoft.

Repita as Etapas 1 e 2 para vários níveis de cache

Se o nó W2K8WEBSERVER2 pai do servidor estiver configurado com recursos de cache e ARR, talvez seja necessário marcar O IISLOGS ou FREB para ver se houve um Hit ou Miss em cache e decidir para onde proceder dependendo da entrada desse cache status.

A solicitação é encaminhada para o Servidor de Origem

Esta etapa pode ser tratada como uma solicitação HTTPS normal e pode ser rastreada com as seguintes ferramentas:

  • Monitor de Rede – captura rastreamentos no servidor Origin para verificar o recebimento da solicitação.
  • Logs do IIS – verifica os logs do IIS em busca de códigos de resposta HTTP para o conteúdo que você está rastreando.
  • Logs de FREB do IIS - Se a solicitação foi encontrada no rastreamento de rede e o código de resposta HTTP não for um 200, talvez você queira usar o FREB novamente para solucionar o problema.

Solução de problemas de falhas de cache

Verificar cabeçalhos Cache-Control

Verifique Cache-Control cabeçalhos recebidos do cliente. Isso pode ser feito em conjunto com a verificação das regras de controle de cache, pois os cabeçalhos podem ser configurados para substituir cabeçalhos.

Revisar regras de Cache-Control no ARR

Verifique as Regras de Controle de Cache no ARR para verificar se o cache ARR está habilitado.

Verificar HTTP.SYS configurações

Para obter mais informações sobre por que o conteúdo não é armazenado em cache por HTTP.sys no kernel, consulte Instâncias em que HTTP.sys não armazena em cache conteúdo.

Falhas no cache de disco

O ARR registra eventos no log de eventos do aplicativo quando ocorrem falhas no disco e marca o disco como não íntegro.

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: 

Mais informações