Condividi tramite


Risoluzione dei problemi relativi agli elementi della cache ARR V2

di Apurva Joshi

Strumenti usati in questo strumento di risoluzione dei problemi:

  • ARR Helper
  • Traccia delle richieste non riuscite (FREB)
  • IIS Advanced Logging
  • Network Monitor

Questo materiale viene fornito solo a scopo informativo. Microsoft non riconosce alcuna garanzia, espressa o implicita.

Panoramica

In questa procedura dettagliata verrà tracciata una richiesta man mano che passa attraverso ARR e viene inviata al server di livello successivo ed esamina i dati che possono essere raccolti per identificare la richiesta da cui è stato inviato e infine da dove è stata servita.

Informazioni sull'architettura della farm

Il primo passaggio consiste nel comprendere l'architettura dell'ambiente, tra cui quanto segue. Senza conoscenza di questo sarebbe impossibile definire qualsiasi tipo di piano d'azione logico durante la risoluzione dei problemi.

  • Topologia farm ARR (numero di server, configurazione del routing, altri dispositivi)
  • Regole di riscrittura URL sul posto

Ai fini di questa procedura dettagliata si userà la configurazione seguente.

Il diagramma mostra un nodo figlio, un nodo padre e un server di origine con frecce per indicare errori e richieste della cache.

Configurazione cache disco:

Un'unità locale con dimensioni massime di 100 GB configurate.

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

Regole di controllo della cache globale:

Questa regola viene definita come Cache per 60 minuti quando non esiste alcuna direttiva di controllo della 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>

Creare un piano di raccolta dati

In questa sezione verrà eseguito un passaggio attraverso il flusso di riscontri e mancati riscontri nella cache, perché passa attraverso ARR e si identificano gli strumenti o i log che è possibile usare per controllare le richieste. I passaggi seguenti descrivono il flusso di richiesta per il contenuto non memorizzato nella cache in precedenza usando la configurazione precedente come riferimento e gli strumenti usati in ogni passaggio.

  • Il contenuto richiesto non viene trovato in locale (né in memoria né su disco nel nodo figlio).

    • Log freb
    • Registrazione predefinita di IIS
    • Network Monitor
  • La richiesta viene inoltrata al nodo della cache del livello successivo (nodo padre).

    • Log freb
    • modulo IIS Advanced Logging
    • Registrazione predefinita di IIS
    • Network Monitor
  • Il contenuto richiesto non viene trovato nel nodo della cache del livello successivo (né in memoria né su disco): ripetere i passaggi 2 quante volte appropriato in base alla gerarchia della cache.

  • La richiesta viene inoltrata al server di origine.

    • Log freb
    • Registrazione predefinita di IIS
    • Network Monitor

Raccogliere i dati

Il contenuto richiesto non viene trovato in locale (né in memoria né su disco).

Qui è possibile identificare un hit/miss della cache nei log iis o freb. I log freb forniscono dettagli aggiuntivi, ad esempio la posizione in cui è stata indirizzata la richiesta, che sarà importante se sono presenti più server di livello inferiore.

Voce del log IIS: Le voci seguenti sono disponibili nel campo CS: uri-Query che identifica l'hit o il guid della cache per la richiesta che è possibile usare per identificare la richiesta nei server di livello inferiore.

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.

Log FREB: Il mancato riscontro nella cache viene trovato dalla voce ARR_DISK_CACHE_GET_FAILED.

Tipo Voce Dettagli
r avviso ARR_DISK_CACHE_GET_FAILED FilePath="\?\C:\ARRCache\localhost\iisstart.htm.full", ErrorCode="Impossibile trovare il file specificato. (0x80070002)", IsRangeEntry="false", RangeOffset="0", RangeSegmentSize="0"

Identificare il server a cui viene instradata la richiesta. Qui è possibile vedere la richiesta inviata al server W2K8WEBSERVER2 in modo da sapere che sarà il server di livello successivo per la revisione dei dati.

Tipo Voce Dettagli
i ARR_SERVER_ROUTED RoutingReason="LoadBalancing", Server="W2K8WEBSERVER2", State="Active", TotalRequests="8", FailedRequests="0", CurrentRequests="1", BytesSent="1127", BytesReceived="6441379", ResponseTime="31351"

Le intestazioni seguenti vengono aggiunte alla richiesta di inoltro. Se alcuni nomi sono diversi dai valori predefiniti X-Forwarded-For, X-ARR-ClientCert e X-ARR-LOG-ID, potrebbero essere stati personalizzati nelle impostazioni proxy di Server Farm.

Intestazione Dettagli
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"

La richiesta viene inoltrata al nodo della cache del livello successivo (nodo padre)

Nel passaggio precedente è stato identificato questo server come W2K8WEBSERVER2 , quindi verranno esaminati i dati seguenti in questo server. Come nei passaggi precedenti, sono disponibili più punti dati che è possibile usare. Usando X-ARR-LOG-ID è possibile identificare la richiesta raggiunta dal server.

Log FREB: La richiesta può essere identificata dall'ID X-ARR-LOG-inviato dal nodo figlio. Questo è stato identificato come "fe9d20da-a571-4451-8ef3-0e7faf1a463a" nell'ultimo passaggio.

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

modulo IIS Advanced Logging: usando la registrazione avanzata è possibile aggiungere campi di registrazione personalizzati in base alle intestazioni X-Forwarded-For e X-ARR-LOG-ID e quindi usare il filtro per registrare solo quando sono presenti queste intestazioni.

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

Monitoraggio di rete: Anche in questo caso è possibile usare la traccia per identificare X-ARR-LOG-ID e X-Forwarded-For se si traccia una richiesta specifica.

Helper ARR: questo modulo aggiunge X-Forwarded-For al campo C-IP e X-ARR-LOG-ID al campo cs-uri-query dei log IIS predefiniti.

Nota

ArrHelper non è attualmente supportato da Microsoft

Ripetere i passaggi 1 e 2 per più livelli di cache.

Se il nodo padre del server W2K8WEBSERVER2 è configurato anche con ARR e le funzionalità di memorizzazione nella cache, si esaminerà di nuovo IISLOGS/FREB per verificare se è presente riscontri/mancati riscontri nella cache e dove andare in base a tale ricerca.

La richiesta viene inoltrata al server di origine

Questo passaggio può essere considerato come una normale richiesta http/s e può essere monitorato con gli strumenti seguenti.

  • Monitoraggio di rete: acquisire tracce nel server di origine per verificare la ricezione della richiesta
  • Log IIS: controllare i log IIS per i codici di risposta Http per il contenuto di cui si esegue la traccia
  • Log FREB iis: se la richiesta è stata trovata nella traccia di rete e il codice di risposta Http non è un 200, è possibile usare FREBagain per risolvere il problema.

Risoluzione dei problemi relativi a errori della cache

Controllare le intestazioni Cache-Control

Verificare Cache-Control intestazioni ricevute dal client. Questa operazione può essere eseguita in combinazione con il controllo delle regole di controllo cache perché possono essere configurate per eseguire l'override delle intestazioni.

Esaminare le regole di Cache-Control in ARR

Controllare le regole di controllo della cache in ARR per verificare che la memorizzazione nella cache ARR sia abilitata.

Verificare le impostazioni di HTTP.SYS

Controllare i motivi per cui il contenuto non viene memorizzato nella cache da HTTP.sys nel kernel QUI

Errori della cache del disco

Arr registra gli eventi nel registro eventi dell'applicazione quando si verificano errori del disco e contrassegna il disco come non integro.

Nome registro: Applicazione
Origine: Routing delle richieste dell'applicazione
Data: 11/2/2009 5:26:59 PM
ID evento: 1006
Categoria attività: Nessuna
Livello: Avviso
Parole chiave: Classico
Utente: N/D
Computer:
Descrizione: l'unità con percorso '\?\E:\temp$\arrcache' viene contrassegnata come non integra. I dati contengono il codice di errore.
Xml evento:

Risorse aggiuntive