アプリケーション プール「Classic .NET AppPool」を提供するプロセスで、Windows プロセス アクティベーション サービスとの致命的な通信エラーが発生しました。
-
22-07-2019 - |
質問
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。サービスは利用できません。
誰かがこれがどのように起こったのか、そして今後それが起こらないようにするには何をする必要があるのかを特定するのを手伝ってくれませんか。
解決
これはかなり厄介なものです。を取得することをお勧めします IIS デバッグ診断 ツール。アプリケーション プールのプロパティで [Rapid Fail Protection] をオフにすることで症状を軽減できる可能性がありますが、それは問題を隠すだけです。何が起こっているのかというと、アプリケーションで例外が非常に頻繁に/非常に繰り返し発生し、サービス自体が停止してしまうということです。発生している例外を見つけるには、診断ツールを実行して出入りするすべてのものをキャプチャする必要があります。
このツールはふるいにかけるべき何ギガバイトものジャンクを収集するため、これは非常に骨の折れる作業となる可能性があります。運が良ければ、「Rapid Fail Protection」をオフにすると、例外がブラウザに到達する可能性がありますが、私の推測では、サーバーは単にハングアップするだけだと思います。
他のヒント
NServiceBus を使用している場合は、アプリケーション プールを実行しているアカウントに、メッセージ キューから読み取る権限があることを確認してください。
NServiceBus は、アプリケーションの起動時にバックグラウンド タスクを実行します。このタスクは 10 秒後にタイムアウトし、キューから読み取れない場合は w3wp プロセスが強制終了されます。n (デフォルトは 5) 後、w3wp がクラッシュし、Rapid-Fail Protection が作動し、アプリケーション プールを停止します。
http://blog.jonathanoliver.com/2010/11/nservicebus-w3wp-exe-processes-crashing/
無限ループが原因である可能性が高くなります。
(私も同じ問題を抱えていました。) したがって、コード内でループを使用している場所を探し、そのうちの 1 つを削除することでエラーが停止するかどうかを確認するだけです。原因を見つけたら、無限ループの原因を突き止めることができます。
同じ厄介な問題を追跡して修正しました。問題の原因となる可能性のあることがいくつかあります。
- Server.Transfer() ループ
- 特定のシナリオでの CurrentThread.Abort() の呼び出し。(Server.Transfer() の後のように!)
それらを修正することで問題は解決しました。
この問題が発生し、イベント ビューアに「モジュール DLL C:\Windows\system32 pcProxy pcProxy.dll の読み込みに失敗しました。データがエラーです。」 この投稿には、これを修正する手順が記載されていました。http://forums.iis.net/t/1154189.aspx