IIS 6.0 で ASP.NET がデッドロックになった場合のダンプ ファイルの生成方法

概要
Microsoft インターネット インフォメーション サービス (IIS) 6.0 でデッドロックが発生した場合、次のようなメッセージがアプリケーション ログに記録されます。

種類 : 警告
ソース : W3SVC-WP
分類 : なし
イベント ID : 2262
日付 : 2003/7/29
時刻 : 12:08:58
ユーザー : N/A
コンピュータ : ComputerName
説明 : 次の理由のため、ISAPI 'C:\WINNT\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll' は自身が危険な状況であると報告しました : 'デッドロックが検出されました'。

また、次のようなメッセージがシステム ログに記録されます。

種類 : 警告
ソース : W3SVC
分類 : なし
イベント ID : 1013
日付 : 2003/7/29
時刻 : 12:09:34
ユーザー : N/A
コンピュータ : ComputerName
説明 : アプリケーション プール 'DefaultAppPool' を提供しているプロセスはシャットダウンの最中に時間制限を超えました。プロセス id は '2756' でした。詳細な情報は、http://support.microsoft.com の [ヘルプとサポート センター] を参照してください。

診断で使用するダンプ ファイルを生成する

IIS 6.0 には、孤立したワーカー プロセスという新機能があります。この機能によって、リサイクルされる予定のプロセスをそのプロセスが終了する前に調査することができます。孤立したワーカー プロセスは、調査のためにプロセスにデバッガをアタッチして、ダンプ ファイルを生成するために使用することができます。

: この機能は、プロセスが IIS 5.0 互換モードで実行されているときには有効になりません。

Debugging Tools for Windows をダウンロードする

Debugging Tools for Windows をダウンロードするには、以下のマイクロソフト Web サイトで、使用している環境に該当するサイトにアクセスしてください。

Windows 32 ビット版Windows 64 ビット版 : Debugging Tools for Windows のインストール時には、必ず次のディレクトリにファイルを保存してください。
C:\Debuggers

ワーカー プロセスが孤立したときに実行されるバッチ ファイルを作成する

  1. メモ帳を起動します。
  2. メモ帳に次のコードを貼り付けます。
    @if "%_echo%"=="" echo offsetlocal    set TIMESTAMP=%DATE:~-9%_%TIME%set TIMESTAMP=%TIMESTAMP:/=_%set TIMESTAMP=%TIMESTAMP::=_%set TIMESTAMP=%TIMESTAMP:.=_%set TIMESTAMP=%TIMESTAMP: =_%set FILENAME=c:\crash_%TIMESTAMP%.dmpset LOG=c:\log.txtset COMMAND=c:\debuggers\cdb.exe -c ".dump /o /mhf %FILENAME%;q" -p %1echo %COMMAND% > %LOG%%COMMAND%endlocal
  3. ファイルを FileName.cmd という名前で保存します。この例では、ファイルに Action.cmd という名前を付けますが、任意の名前を使用することができます。
: 必要に応じて、デバッガの場所および結果として生成されるダンプ ファイルの場所を変更してください。

孤立したワーカー プロセスを設定する

  1. コマンド プロンプトで次のコマンドを入力し、Enter キーを押します。
    cd \Inetpub\adminscripts
  2. 孤立したワーカー プロセス機能を有効にするには、コマンド プロンプトで次のコマンドを入力します。
    adsutil.vbs SET W3SVC/AppPools/DefaultAppPool/OrphanWorkerProcess TRUE
  3. コマンド プロンプトで、プロセスがリサイクルされる予定のときに実行される実行可能ファイルを設定します。たとえば、この場合では、「ワーカー プロセスが孤立したときに実行されるバッチ ファイルを作成する」で作成したバッチ ファイルを使用します。
    adsutil.vbs SET W3SVC/AppPools/DefaultAppPool/OrphanActionExe "c:\action.cmd"
    adsutil.vbs SET W3SVC/AppPools/DefaultAppPool/OrphanActionParams "%1%" 
: 「ワーカー プロセスが孤立したときに実行されるバッチ ファイルを作成する」で作成したバッチ ファイルの場所が OrphanActionExe オプションに指定されていることを確認します。また、W3wp.exe プロセスの ID を確認して、このファイルへの読み取りおよび書き込みのアクセス許可があることを確認します。

: 危険な状況であると報告されるワーカー プロセスのデバッグを IIS で有効にする場合は、監視するこれらのワーカー プロセスが解放されていることを確認してください。IIS がこれらのワーカー プロセスをメモリから自動的に削除することはありません。これらのワーカー プロセスを正しく処理しないと、エラーになったワーカー プロセスがコンピュータ上で多数実行されることがあります。これらのワーカー プロセスは、他のプロセスが必要とするリソースを占有する可能性があり、直ちに終了させて、それらのリソースを解放する必要があります。また、これらのワーカー プロセスがメタベースへのアクセスをブロックする場合もあります。その結果、他のワーカー プロセスや World Wide Web サービス自体で問題が発生します。
関連情報
詳細については、次の MSDN (Microsoft Developer Network) Web サイトを参照してください。危険な状況であると報告されるワーカー プロセスのデバッグ方法の詳細については、次のマイクロソフト Web サイトを参照してください。
プロパティ

文書番号:828222 - 最終更新日: 12/04/2007 14:43:00 - リビジョン: 8.2

Microsoft ASP.NET 1.1, Microsoft Internet Information Services 6.0

  • kbhowtomaster kbdebug KB828222
フィードバック