Ottenere i dump degli arresti anomali del processo di lavoro IIS
-
09-06-2019 - |
Domanda
Sto facendo qualcosa di brutto nella mia app ASP.NET.Potrebbe essere il numero qualsiasi di librerie CTP che sto utilizzando o semplicemente non sto eliminando qualcosa correttamente.Ma quando ridistribuisco ASP.NET sull'installazione di Vista IIS7 o sull'installazione di IIS6 del mio server, si blocca un processo di lavoro IIS.
Ho ristretto il problema al mio crawler HTTP, che è una bestia multithread che esegue la scansione dei siti alla ricerca di informazioni utili quando richiesto.Dopo aver avviato un crawler e ridistribuito l'app in alto, anziché scaricare con garbo appDomain e ricaricarlo, un processo di lavoro IIS si bloccherà (visualizzando un messaggio di arresto anomalo) e continuerà a ricaricare il dominio dell'app.
Quando si verifica questo arresto anomalo, dove posso trovare il dump dell'arresto anomalo per l'analisi?
Soluzione
Scarica gli strumenti di debug per Windows:http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx
Strumenti di debug per Windows dispone di uno script (ADPLUS) che consente di creare dump quando un processo si blocca:http://support.microsoft.com/kb/286350
Il comando dovrebbe essere qualcosa del tipo (se stai utilizzando IIS6):
cscript adplus.vbs -crash -pn w3wp.exe
Questo comando collegherà il debugger al processo di lavoro.Quando si verifica l'arresto anomalo verrà generato un dump (un file *.DMP).
Puoi aprirlo in WinDBG (incluso anche negli strumenti di debug per Windows).File > Apri dump arresto anomalo del sistema...
Per impostazione predefinita, WinDBG ti mostrerà (accanto alla riga di comando) il thread in cui il processo si è bloccato.
La prima cosa che devi fare in WinDBG è caricare le estensioni .NET Framework:
.loadby sos mscorwks
quindi, visualizzerai lo stack di chiamate gestito:
!clrstack
se il thread non eseguiva codice gestito, dovrai controllare lo stack nativo:
kpn 200
Questo dovrebbe darti qualche idea.Per continuare la risoluzione dei problemi ti consiglio di leggere il seguente articolo:
Altri suggerimenti
Una rapida ricerca trovato Stato IISS - si basa su Strumenti di debug di Windows e deve essere in esecuzione quando si verifica un arresto anomalo, ma date le circostanze che hai descritto, questo non dovrebbe essere un problema,
Puoi anche usare DebugDiag per questo
Un'ottima spiegazione può essere trovata qui:
http://blogs.msdn.com/b/tess/archive/2009/03/20/debugging-a-net-crash-with-rules-in-debug-diag.aspx