Sto eseguendo un'applicazione ASP.NET 4.0 in IIS 7.5. Diverse volte al giorno, il nostro pool di applicazioni si sta riciclando in modo imprevisto. Il nostro registro di sistema mostra il seguente evento quando si verifica questo:Un processo che serve il pool di applicazioni 'X' ha subito un errore di comunicazione fatale con il servizio Attivazione processo di Windows
Un processo che serve il pool di applicazioni 'X' ha subito un errore di comunicazione fatale con il servizio Attivazione processo di Windows. L'id del processo era '5768'. Il campo dati contiene il numero di errore.
O
Un processo pool di applicazioni 'X' non è riuscito a rispondere a un ping. L'id del processo era '1032'.
Quasi sempre, c'è un evento corrispondente al tempo stesso esatto nel registro applicazione in questo modo:
Faulting application name: w3wp.exe, version: 7.5.7600.16385, time stamp: 0x4a5bcd2b
Faulting module name: clr.dll, version: 4.0.30319.269, time stamp: 0x4ee9ae83
Exception code: 0xc00000fd
Fault offset: 0x00001916
Faulting process id: 0x508
Faulting application start time: 0x01cd4d8958ecf9ad
Faulting application path: C:\Windows\SysWOW64\inetsrv\w3wp.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Report Id: 8dcc413b-b98a-11e1-8075-001c23d6d910
Così ho installato IIS Debugging Tools e impostare una regola di arresto anomalo, specificato "Una specifica applicazione web IIS pool ", nessuna registrazione per le eccezioni di prima scelta e nulla in" Impostazioni avanzate "(eccezioni, punti di interruzione, eventi).
Sono anche (contemporaneamente) in esecuzione ADPlus da Strumenti di Windows di debug con il seguente riga di comando:
adplus -crash -pn w3wp.exe -NoDumpOnFirst -o c:\logs
Tuttavia, dal momento che ho attaccato il debugger, ho ottenuto diversi livello di "warning" messaggi nel registro di sistema (quelli relativi al "Processo che serve il pool di applicazioni" X "hanno subito un errore di comunicazione fatale ..."), ma NON sto più ricevendo l'evento corrispondente al livello di errore nel registro dell'applicazione.
L'unica cosa che sono stato in grado di ottenere è la seguente (c'erano circa 50 di questi):
[6/18/2012 7:50:25 PM] Thread exited. Exiting thread system id - System ID: 3300. Exit code - 0x800703e9
[6/18/2012 7:50:25 PM] Thread exited. Exiting thread system id - System ID: 4992. Exit code - 0x800703e9
[6/18/2012 7:50:25 PM] Thread exited. Exiting thread system id - System ID: 5456. Exit code - 0x800703e9
[6/18/2012 7:50:25 PM] Thread exited. Exiting thread system id - System ID: 4924. Exit code - 0x800703e9
Codice di uscita 0x800703e9 indica un overflow dello stack da qualche parte, che è una fortuna, perché questo dovrebbe essere facile da risolvere una volta che posso trovarlo.
Tuttavia, per fare ciò, ho bisogno di ulteriori informazioni dai miei dump di arresto in modo da poterli aprire con WinDbg e utilizzare il comando "! Clrstack" per individuare il problema.
La mia domanda è: Ho gli strumenti di debug configurati in modo errato o sto fraintendendo i registri degli eventi? Sembra che il nostro pool di applicazioni venga riciclato ogni volta che vedo l'evento nel registro di sistema relativo a "errore di comunicazione fatale con il servizio Attivazione processo di Windows", tuttavia non ricevo alcuna informazione di arresto anomalo di IIS Debugging Tools o ADPlus quando si verificano tali eventi. E per qualche ragione, dal momento che ho collegato i debugger, non ricevo più altri eventi di "Errore" nel registro dell'applicazione che corrispondono agli eventi di avviso del registro di sistema. Non so perché. In qualche modo ho bisogno di ottenere il dump completo di crash con le informazioni CLR al suo interno in modo da poter capire dove sia il mio problema.
L'unica altra cosa che posso ricordare è che il servizio Segnalazione errori di Windows non è in esecuzione. Non sono sicuro che sia necessario o no.
Grazie per qualsiasi aiuto.
correlati http://stackoverflow.com/questions/7204444/iis7-a-processo-servizio-applicativo-pool-yyyyy-suffered-a-fatal-communication – RJFalconer