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.