web-dev-qa-db-ja.com

アプリケーションプール 'Classic .NET AppPool'を提供するプロセスが、Windowsプロセスアクティブ化サービスとの致命的な通信エラーを被った

Windows Server 2008でIIS 7でASP.NET 3.5 Webアプリケーションを実行しています。

今日の午後早くに次のエラーを受け取りました。

_HTTP Error 503. The service is unavailable._

イベントログを調べたところ、次のことがわかりました。

_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._

そのイベントの詳細は次のとおりです。

_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>
_

その結果:

Application pool 'Classic .NET AppPool' is being automatically disabled due to a series of failures in the process(es) serving that application pool.

そのイベントの詳細は次のとおりです。

_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>
_

結論:HTTPエラー503。サービスは利用できません。

誰かが私にこれがどのように起こったのか、そして将来それが起こらないようにするために何をする必要があるのか​​を特定するのを助けてくれませんか?.

36
Walter Lockhart

これはかなり厄介なものです。 IIS Debug Diagnostics ツールを入手することをお勧めします。アプリケーションプールのプロパティで "Rapid Fail Protection"をオフにすることで症状を緩和できる可能性がありますが、それでは問題がマスクされます。起こっているのは、アプリケーションが非常に頻繁に/非常に繰り返し例外を経験しているため、サービスが自動的に停止することです。診断ツールを実行して、出入りするすべてのものをキャプチャし、発生している例外を見つける必要があります。

このツールはギガバイトのジャンクを収集して選別するため、これは非常に骨の折れる作業です。運が良ければ、「Rapid Fail Protection」をオフにすると、例外がブラウザーに進むことができますが、サーバーはハングするだけです。

16
Joel Etherton

NServiceBusを使用している場合は、アプリケーションプールで実行されているアカウントに、メッセージキューから読み取る権限があることを確認してください。

NServiceBusは、アプリケーションの起動時にバックグラウンドタスクを実行し、10秒後にタイムアウトします。これにより、w3wpプロセスがキューから読み取れない場合に強制終了されます。 n(デフォルトは5)w3wpがクラッシュすると、Rapid-Fail Protectionが起動し、アプリケーションプールを停止します。

http://blog.jonathanoliver.com/2010/11/nservicebus-w3wp-exe-processes-crashing/

8
Luke Smith

最も可能性が高いのは、無限ループです。

(私はちょうど同じ問題を抱えていた。)したがって、ループを使用するコード内の場所を探し、それらのいずれかを削除するとエラーが停止するかどうかを確認する必要があります。犯人を見つけたら、何が原因で無限ループを引き起こしているのかを突き止めることができます。

7
zasyatkin

私はちょうど同じ厄介な問題を追跡して修正しました。問題を引き起こす可能性のあるいくつかのこと:

  • Server.Transfer()ループ
  • 特定のシナリオでCurrentThread.Abort()を呼び出す..(Server.Transfer()の後!)

それらを修正することが、私たちにとってそれを修正したものです。

2
JerSchneid

この問題が発生し、イベントビューアには「モジュールDLL C:\ Windows\system32\RpcProxy\RpcProxy.dllの読み込みに失敗しました。データはエラーです。」がありました。」これを修正するには: http://forums.iis.net/t/1154189.aspx

0
campo