Un processo che serve il pool di applicazioni "Classic .NET AppPool" ha subito un errore di comunicazione fatale con il servizio di attivazione dei processi di Windows

StackOverflow https://stackoverflow.com/questions/1445566

Domanda

Sto eseguendo un'applicazione Web ASP.NET 3.5 su IIS 7 su Windows Server 2008.

Ho ricevuto il seguente errore all'inizio di questo pomeriggio:

Errore HTTP 503. Il servizio non è disponibile.

Ho guardato nei registri degli eventi e ho scoperto che:

Un processo che serve il pool di applicazioni "Classic .NET AppPool" ha subito un errore di comunicazione fatale con il servizio di attivazione dei processi di Windows. L'ID del processo era "3328". Il campo dati contiene il numero di errore.

Ecco i dettagli completi di quell'evento:

Log Name:      System
Source:        Microsoft-Windows-WAS
Date:          18/09/2009 14:58:31
Event ID:      5011
Task Category: None
Level:         Warning
Keywords:      Classic
User:          N/A
Computer:      computername
Description:
A process serving application pool 'Classic .NET AppPool' suffered a fatal communication error with the Windows Process Activation Service. The process id was '3328'. The data field contains the error number.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Microsoft-Windows-WAS" Guid="{5 .. 0}" EventSourceName="WAS" />
    <EventID Qualifiers="32768">5011</EventID>
    <Version>0</Version>
    <Level>3</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2009-09-18T13:58:31.000Z" />
    <EventRecordID>23552</EventRecordID>
    <Correlation />
    <Execution ProcessID="0" ThreadID="0" />
    <Channel>System</Channel>
    <Computer>computername</Computer>
    <Security />
  </System>
  <EventData>
    <Data Name="AppPoolID">Classic .NET AppPool</Data>
    <Data Name="ProcessID">3328</Data>
    <Binary>6D000780</Binary>
  </EventData>
</Event>

Ciò ha comportato:

Pool di applicazioni 'Classic .NET AppPool' viene disabilitato automaticamente a causa di una serie di errori nei processi che servono quel pool di applicazioni.

Ecco i dettagli completi di quell'evento:

Log Name:      System
Source:        Microsoft-Windows-WAS
Date:          18/09/2009 15:03:05
Event ID:      5002
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      computername
Description:
Application pool 'Classic .NET AppPool' is being automatically disabled due to a series of failures in the process(es) serving that application pool.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Microsoft-Windows-WAS" Guid="{5 .. 0}" EventSourceName="WAS" />
    <EventID Qualifiers="49152">5002</EventID>
    <Version>0</Version>
    <Level>2</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2009-09-18T14:03:05.000Z" />
    <EventRecordID>23557</EventRecordID>
    <Correlation />
    <Execution ProcessID="0" ThreadID="0" />
    <Channel>System</Channel>
    <Computer>computername</Computer>
    <Security />
  </System>
  <EventData>
    <Data Name="AppPoolID">Classic .NET AppPool</Data>
    <Binary>
    </Binary>
  </EventData>
</Event>

Concludendo in: Errore HTTP 503. Il servizio non è disponibile.

Qualcuno potrebbe aiutarmi per favore a identificare come è successo e cosa devo fare per evitare che accada in futuro.

È stato utile?

Soluzione

Questo è piuttosto brutto. Raccomando di ottenere gli strumenti IIS Debug Diagnostics . Probabilmente puoi alleviare il sintomo disattivando " Protezione rapida da errori " nelle proprietà del pool di applicazioni, ma ciò limiterà a mascherare il problema. Quello che sta succedendo è che l'applicazione sta riscontrando un'eccezione così spesso / così ripetutamente che il servizio si spegne da solo. Dovrai eseguire lo strumento di diagnostica per acquisire tutto ciò che entra e esce per trovare l'eccezione che si sta verificando.

Questo può essere un compito molto laborioso perché lo strumento raccoglierà gigabyte di spazzatura da setacciare. Se sei fortunato, la disattivazione di " Protezione rapida dai guasti " potrebbe consentire all'eccezione di passare al browser, ma suppongo che il server finirà per bloccarsi.

Altri suggerimenti

Se si utilizza NServiceBus, assicurarsi che l'account in cui è in esecuzione il pool di applicazioni disponga delle autorizzazioni per leggere la coda dei messaggi.

NServiceBus esegue un'attività in background all'avvio dell'applicazione che scade dopo 10 secondi, causando la chiusura del processo w3wp se non riesce a leggere dalla coda. Dopo n (impostazione predefinita 5) w3wp si arresta in modo anomalo. La protezione Rapid-Fail si avvia e arresta il pool di applicazioni.

http://blog.jonathanoliver.com/ 2010/11 / NServiceBus-w3wp-exe-processi-crash /

Probabilmente è causato da un ciclo infinito.

(Ho appena avuto lo stesso problema.) Quindi dovrai solo cercare i punti nel codice che usano i loop e vedere se la rimozione di uno di essi arresta l'errore. Una volta trovato il colpevole, allora puoi provare a capire cosa sta causando un ciclo indefinito.

Ho appena rintracciato e risolto lo stesso brutto problema. Un paio di cose che potrebbero causare il problema:

  • Un loop Server.Transfer ()
  • Chiamata CurrentThread.Abort () in alcuni scenari .. (Come dopo un Server.Transfer ()!)

Risolvere queste cose è ciò che l'ha risolto per noi.

Ho avuto questo problema, il visualizzatore eventi aveva " Impossibile caricare la DLL del modulo C: \ Windows \ system32 \ RpcProxy \ RpcProxy.dll. I dati sono l'errore. & Quot; Questo post aveva i passaggi per correggere questo: http://forums.iis.net/t/1154189.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top