C'è un ottimo presentation di Dan Farino, Chief Systems Architect allo MySpace.com, che mostra uno strumento di dumping stack basato sul Web che cataloga tutti i thread in esecuzione in un dato processo (cosa stanno facendo, quanto tempo hanno stato di esecuzione, ecc)Strumento di dump di stack basato sul Web per ASP.NET che utilizza Mdbg?
Le loro tecniche sono riassunte sul highscalability.com:
- PerfCollector.
Centralizzata raccolta di dati sulle prestazioni tramite UDP. Più affidabile di Windows e stats consente a qualsiasi client di connettersi e vedere statistiche. - Strumento Dump di stack basato sul Web.
È possibile fare clic con il pulsante destro del mouse su un server problematico e ottenere il dump dello stack dei thread gestiti .Net . Utilizzato per avere RDC nel sistema e collegare un debugger e 1/2 in seguito ottenere una risposta. Lento, non scalabile e noioso. Non solo uno stack dump , fornisce un sacco di contesto su ciò che il thread sta facendo. La risoluzione dei problemi è più semplice perché è possibile vedere 90 thread bloccati su un database in modo che il database possa essere inattivo. - Strumento dump di heap di base Web.
Scarica tutte le allocazioni di memoria . Molto utile per gli sviluppatori . Risparmia ore di lavoro con la mano . • Profiler. Traccia una richiesta dall'inizio alla fine e produce un rapporto . Vedi URL, metodi, stato, tutto ciò che ti aiuterà identificare una richiesta lenta. Guarda le convinzioni del blocco , ci sono un sacco di eccezioni generate, qualsiasi cosa che potrebbe essere interessante. Peso molto leggero . È in esecuzione su una casella in ogni VIP (gruppo di 100 server) nella produzione . Campioni 1 thread ogni 10 secondi. Tracciamento sempre nello sfondo .
La domanda è: quali strumenti sono necessari per creare uno stack dump tool basato su Web per ASP.NET? Per comodità, supponiamo che un * .aspx ospitato nell'AppDomain di destinazione, in grado di generare tutti gli stack di chiamate gestite in quel processo, sia sufficiente.
ci sono alcuni post che riguardano l'uso di MDBG (debugger per il codice gestito scritto interamente in C#/IL che ha iniziato la spedizione con CLR 2 SDK) e il gruppo mdbgcore in genere si trovano in C: \ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin:
- http://dotnetdebug.net/2005/11/09/exceptiondbg-v01-debug-your-exceptions/
- http://blogs.msdn.com/jmstall/archive/tags/MDbg/default.aspx
- http://blogs.msdn.com/vijaysk/archive/2009/11/04/asp-net-debugger-extension-for-iis-7.aspx
Una soluzione farebbe semplicemente riferimento a questo assieme per produrre l'uscita desiderata?Quale impatto avrebbe una "lista di tutti gli stack di chiamate gestite" sul processo in esecuzione che serve al traffico di produzione?