IIS7.5でASP.NET4.0アプリケーションを実行しています。1日に数回、アプリケーションプールが予期せずリサイクルされています。これが発生すると、システムログに次のイベントが表示されます。
プロセスサービングアプリケーションプール「X」で、Windowsプロセスアクティベーションサービスとの致命的な通信エラーが発生しました。プロセスIDは「5768」でした。データフィールドにはエラー番号が含まれています。
また
アプリケーションプール「X」を提供するプロセスがpingに応答できませんでした。プロセスIDは「1032」でした。
ほとんどの場合、アプリケーションログには次のような対応するイベントが同時に発生します。
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
そこで、 IISデバッグツールをインストールし、クラッシュルールを設定し、「特定のIIS Webアプリケーションプール」を指定し、初回例外のログを記録せず、[詳細設定](例外、ブレークポイント、イベント)の下に何も設定しませんでした。
また、次のコマンドラインを使用してWindowsデバッグツールからADPlusを(同時に)実行しています。
adplus -crash -pn w3wp.exe -NoDumpOnFirst -o c:\logs
ただし、デバッガーを接続したため、システムログにいくつかの「警告」レベルのメッセージが表示されました(「プロセスサービングアプリケーションプール「X」に関するメッセージは致命的な通信エラーが発生しました...」)が、アプリケーションログに対応するエラーレベルイベントが表示されなくなりました。
私が得ることができた唯一のものは次のとおりです(これらの約50がありました):
[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
終了コード0x800703e9は、どこかでスタックオーバーフローを示しています。これは、見つけたら簡単に修正できるはずなので、幸いです。
ただし、これを行うには、クラッシュダンプからの詳細情報が必要です。これにより、WinDbgでクラッシュダンプを開き、「!clrstack」コマンドを使用して問題を特定できます。
私の質問は次のとおりです。デバッグツールが正しく構成されていませんか、それともイベントログを誤解していますか?「Windowsプロセスアクティベーションサービスとの致命的な通信エラー」に関するイベントがシステムログに表示されるたびに、アプリプールがリサイクルされているようですが、これらのイベントが発生したときにIISデバッグツールまたはADPlusからクラッシュダンプ情報を取得していません。また、何らかの理由で、デバッガーを接続したため、システムログの警告イベントに対応する「エラー」イベントがアプリケーションログに表示されなくなりました。理由はわかりません。問題がどこにあるかを把握できるように、CLR情報を含む完全なクラッシュダンプを取得する必要があります。
私が言及できる他の唯一のことは、Windowsエラー報告サービスが実行されていないということです。必要かどうかわからない。
助けてくれてありがとう。