Ricerca degli errori in IIS7
Piergiorgio Malusardi
IT Pro Evangelist
http://blogs.technet.com/pgmalusardi
Tecnologie per la ricerca degli errori in IIS7
• Runtime status and control (RSCA)
• Failed Request Event Buffer
Runtime Status and Control (RSCA)
• Fornisce lo stato e il controllo a runtime per :
•
•
•
•
AppPool
WorkerProcess
WebSite
AppDomain
• Scopo
• Fornire mezzi per ottenere lo stato a runtime di AppPool,
Siti, AppDomain e Worker Process
• Fornire strumenti diretti e consistenti per controllare gli
oggetti indicati
• Esporre in modo dettagliato lo stato a runtime
Runtime Status and Control Data
• Lista delle richieste in esecuzione
• Espone dati dettagliati per ogni richiesta in esecuzione:
•
•
Stato nella pipeline e tempo in quello stato
Modulo attivo e tempo in quel modulo
• Possibilità di avere le richieste per worker process
• Lista degli AppDomain
• Nuovi dati a runtime -> vedere quali sono gli appDomain
caricati!
• Possibilità di scaricare gli appDomain
• Dati esposti anche via Windows Management
Instrumentation (WMI) e codice managed!
Runtime Status and Control Data
Accesso via API Microsoft.Web.Administration
• Microsoft.Web.Administration
•
ApplicationPool:
• Accesso ai WorkerProcess e allo stato del pool stesso
• ServerManager.ApplicationPools
•
WorkerProcess:
• Esposti da ApplicationPool e ServerManager
Runtime Status and Control Data
• ApplicationDomain: esposti via WorkerProcess
•
Dati di stato:
•
•
•
•
•
ID dell’AppDomain
Percorso fisico e virtuale
ID di sito
Idle
Controlli:
•
Scaricamento dell’AppDomain : ApplicationDomain.Unload()
• Site: esposti da ServerManager.Sites
•
•
Dati di stato:
• ID
• Site.State
Azioni/controlli:
• Site.Start()
• Site.Stop()
DEMO:
RUNTIME STATUS AND
CONTROL DATA
Infrastruttura di trace
Introduzione
• Indipendente dallo store:
• Consumatori degli eventi di trace = MODULI
•
•
•
ETW
Automatic Failure Req Tracing (FREB)
…quello che desiderate voi…
• Flessibile:
• aggiunta di nuovi moduli quando richiesti nuovi tipi di store
Infrastruttura di trace
Come funziona
• I moduli consumer si registrano
per GL_TRACE_EVENT
• I consumer sono passati nella
configurazione della trace
• I moduli in pipeline leggono la
configurazione
• I moduli in pipeline alzano un
evento di trace
• L’evento è inviato ai consumer
• Il consumer gestisce l’evento
• Tutti gli eventi dell’infrastruttura di
IIS sono generati in questo
modo!
• 300 eventi nel core di IIS7
• Possibile creare i propri eventi
Sorgenti
degli
eventi di
traceì
Qualsiasi
module
Modulo in
pipeline
Lettura
config delle
trace
w3core
Provider e
consumer
degli eventi di
trace
Consumer
GL_TRACE_EVENT
Config.
delle trace
(etw, freb
ecc.)
Formato
di trace
variabile
Failed Request Event Buffering
• Traccia tutte le richieste
attraverso la pipeline di IIS
• Abilitabile per
sito/applicazione
Begin Request
Read Configuration
• Facile identificazione delle
richieste che falliscono o
sono bloccate
Authenticate
• Fornisce tempo passato in
ogni modulo >
identificazione delle
richieste “long running”
Cached
Authorize
ISAPI Filter
Determine Handler
Automatic Failed Request Tracing
• Non necessario riprodurre l’errore
• Abilito la trace  tengo solo gli eventi per le “richieste
fallite”
• Definizione di “richiesta fallita” per URL
• Tempo speso per evadere la richiesta
• Codice di stato/substato
• Verbosità dell’evento (log on error, ecc.)
• Configurazione delle trace per URL
• es.: per questo URL traccia solo eventi aspnet (per
“*.aspx”)
• Log persistono oltre la durata del processo
Automatic Failed Request Tracing
• Scenari comuni:
• Richieste troppo lunghe/hang (molto comuni)
• Errore in uscita: richiesta completa con status code ≠ 200
•
•
Problemi di autenticazione o autorizzazione
Errori 500 lato server
• Errore sollevato dall’applicazione che ritorna uno status
200
Piattoforma unificata di trace
• Passare all’infrastruttura di trace di IIS7 :
• Trace.Write() e Trace.Warn() da pagine ASP.NET
• Chiamate a System.Diagnostics.TraceSource
• WebEvent sollevati nel contesto delle richieste
• Si usa l’infrastruttura esistente – modello a provider
• In assenza di IIS7 tutto funziona come in Microsoft .NET
Framework 2.0
DEMO:
AUTOMATIC FAILED REQUEST
TRACING
Risorse
• Sito ufficiale di IIS:
http://www.iis.net
• Troubleshooting Failed Requests Using Tracing in IIS7
http://learn.iis.net/page.aspx/266/troubleshooting-failedrequests-using-tracing-in-iis7/
© 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered
trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the
current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it
should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information
provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE
INFORMATION IN THIS PRESENTATION.
Scarica

Runtime status and control Data