Delen via


Scenario 1: HTTP-time-outvoorbeeld met ETW-tracering en Netsh-opdrachten

Via ETW-tracering kan de gegevensstroom via het HTTP Server API-onderdeel worden geïnspecteerd om problemen te diagnosticeren. Gebruikers van een webtoepassing kunnen bijvoorbeeld foutberichten zien in hun browser die een webpagina niet kan weergeven. Op de server waarop de webtoepassing wordt gehost, ziet de IT-professional ook een time-outvermelding voor verbindingen in het HTTP-foutenlogboek, zoals wordt weergegeven in afbeelding 1 hieronder. Het HTTP-foutenlogboek vindt u in de volgende map: %windir%\System32\LogFiles\HTTPERR\.

Schermopname van het opdrachtvenster netsh H T T P met een H T T P-foutenlogboek voor time-out.

Afbeelding 1: HTTP-foutenlogboek voor time-out

Een ETW-traceringsrapport genereren

Als u een ETW-traceringsrapport voor het HTTP Server API-onderdeel wilt genereren, voert u de onderstaande stappen uit vanaf de opdrachtprompt. In dit voorbeeld wordt de tracering uitgevoerd op de server omdat deze als host fungeert voor de webtoepassing.

De onderstaande stappen genereren een tracering met de naam httptrace.etl en converteer de trace vervolgens naar een CSV-bestand met de naam httptrace.csv. Zoals hieronder wordt weergegeven, wordt de ETW-provider voor de HTTP Server-API Microsoft-Windows-HttpService genoemd. De 0xFFF opdrachtregeloptie geeft aan dat alle ETW-gebeurtenissen voor deze provider moeten worden vastgelegd.

een ETW-traceringsrapport genereren

  1. ETW-trace starten voor HTTP Server API-onderdeel: logman.exe httptrace starten -p Microsoft-Windows-HttpService 0xFFFF -o httptrace.etl –ets
  2. Reproduceer het probleem zodat het kan worden vastgelegd in de trace. In dit voorbeeld kunt u de webtoepassing openen vanaf een clientcomputer, waardoor het bericht 'pagina kan niet worden weergegeven' wordt weergegeven op de client.
  3. Nu het probleem is gereproduceerd, stopt u de tracering: logman.exe httptrace -ets stoppen
  4. Het rapport converteren naar CSV-indeling: tracerpt.exe httptrace.etl -of CSV--o httptrace.csv
  5. Bekijk het traceringsrapport. Hieronder ziet u een fragment van een CSV-tracering in tabel 1.

De tracering en diagnose weergeven

Het resulterende CSV-bestand voor traceringen kan worden weergegeven in Excel of elk hulpprogramma dat de CSV-indeling ondersteunt. In tabel 1 hieronder ziet u fragmenten uit een voorbeeldtraceringsbestand (httptrace.csv). In het traceringsrapport toont de kolom Niveau een vermelding met de waarde 3, die overeenkomt met een waarschuwing in ETW. Het HTTP Server-API-onderdeel volgt de ETW-niveaus die zijn gedefinieerd in Instellingen op trefwoordniveau van de System ETW-provider. De ETW-niveaus omvatten:

Niveau Betekenis
1 Kritisch
2 Fout
3 Waarschuwing
4 Infomational
5 Breedsprakig

 

Met deze waarschuwing rapporteert het gebeurtenistype (type kolom) 'ConnTimedOut'. In de volgende kolommen voor de ConnTimeOut-gebeurtenis wordt de specifieke timer die is verlopen gerapporteerd als 'Timer_ConnectionIdle'. Houd er rekening mee dat de kolom met de vermelding 'Timer_ConnectionIdle' niet is opgenomen in de tabel omwille van de beknoptheid en om te voorkomen dat niet-aaneengesloten kolommen worden gefragmenteerd.

Gebeurtenisnaam Type Gebeurtenis-id Versie Kanaal Niveau
EventTrace Rubriek 0 2 0 0
Microsoft-Windows-HttpService ChgUrlGrpProp 28 0 16 4
Microsoft-Windows-HttpService AddUrl 31 0 16 4
Microsoft-Windows-HttpService ChgReqQueueProp 30 0 16 4
Microsoft-Windows-HttpService ChgUrlGrpProp 28 0 16 4
Microsoft-Windows-HttpService ChgSrvSesProp 29 0 16 4
Microsoft-Windows-HttpService ChgSrvSesProp 29 0 16 4
Microsoft-Windows-HttpService ConnConnect 21 0 16 4
Microsoft-Windows-HttpService ConnIdAssgn 22 0 16 4
Microsoft-Windows-HttpService RecvReq 1 0 16 4
Microsoft-Windows-HttpService Ontleden 2 0 16 4
Microsoft-Windows-HttpService LogFileWrite 51 0 16 4
Microsoft-Windows-HttpService ConnCleanup 24 0 16 4
Microsoft-Windows-HttpService ConnTimedOut 53 0 16 3

 

Tabel 1: Fragmenten uit een voorbeeldtraceringsrapport voor een timerprobleem

In dit voorbeeld is de vervaldatum (ConnTimeOut-gebeurtenis) van de headertimer (Timer_ConnectionIdle) de reden dat eindgebruikers het bericht 'pagina kan niet worden weergegeven' in hun webclients zien. Een mogelijke reden voor de time-out kan zijn dat webclients langzaam worden verzonden vanwege trage verbindingen. Om dit probleem op te lossen, kan de time-outwaarde worden aangepast via Netsh-opdrachten.

Time-out aanpassen via Netsh en de oplossing controleren

Met de Netsh-opdrachten voor HTTP die hieronder worden vermeld, kan een IT-professional instellingswaarden weergeven en configureren voor het HTTP Server-API-onderdeel. Wijzigingen via Netsh HTTP-opdrachten zijn van invloed op alle servertoepassingen die worden gehost door het HTTP Server-API-onderdeel voor die machine. Deze wijzigingen blijven behouden tijdens het opnieuw opstarten van het onderdeel en het opnieuw opstarten van de machine. De Netsh HTTP-opdrachten zijn beschikbaar in Windows Vista en Windows Server 2008 en vervangen het HttpCfg.exe hulpprogramma van de Resource Kit van Windows Server 2003 bij uitvoering op Windows Vista en Windows Server 2008. In dit scenario passen we een time-outwaarde aan en controleren we de oplossing. Timers bestaan in het HTTP Server-API-onderdeel om beschikbaarheid te garanderen en te beschermen tegen overconsumption door een onjuist geconfigureerde of kwaadwillende gebruiker. Het aanpassen van timers op basis van standaardwaarden moet zorgvuldig worden geëvalueerd op basis van een mogelijke DoS-aanval.

In dit voorbeeld bevinden de webclients zich achter een trage netwerkverbinding, wat resulteert in de Timer_ConnectionIdle ETW-gebeurtenis. Na overweging van de oorzaak van de time-outs en het verdelen met de impact op de belasting van de server, wordt de beslissing genomen om de time-outwaarden te verhogen tot een waarde van 240 seconden. U kunt de timer weergeven en vervolgens configureren met de volgende procedure.

De timer voor niet-actieve verbinding (Timer_ConnectionIdle) configureren met Netsh-

  1. Open op de server een opdrachtvenster met verhoogde bevoegdheid en voer de onderstaande stappen uit om de time-outwaarde weer te geven en te configureren. Een schermopname van de Netsh HTTP-opdracht wordt weergegeven in afbeelding 2 hieronder.
  2. De huidige time-outwaarden weergeven: Netsh http-time-out weergeven
  3. Configureer de Timer_ConnectionIdle time-outwaarde. In dit voorbeeld wordt de waarde gewijzigd in 240 seconden: Netsh http timeouttype=idleconnectiontimeout value=240

netsh http-opdrachtvenster

Afbeelding 2: Netsh HTTP-opdrachtvenster

Nadat u de time-outwaarde hebt geconfigureerd, voert u de ETW-diagnosestappen opnieuw uit. Als de foutvoorwaarde is gecorrigeerd, mag de ETW-tracering geen time-out meer weergeven met een ETW-niveau van '3' voor de timer voor inactiviteit van de verbinding.