45

私のクライアントには、2 つの運用サーバーに ASP.NET アプリケーションがインストールされています (NLB とバランスが取れていますが、それは関係ありません)。両方のサーバーが 3 ~ 4 時間ごとにクラッシュし、イベント ビューアーに次のエラーが記録されます。

障害が発生しているアプリケーション名: w3wp.exe、バージョン: 7.5.7601.17514、タイム スタンプ: 0x4ce7afa2 障害が発生しているモジュール名: clr.dll、バージョン: 4.0.30319.18034
、タイム スタンプ: 0x50b5a783
例外コード: 0xc00000fd 障害オフセット: 0x000000000001a840 障害が発生
しているプロセス id0
アプリケーションの開始時間: 0x01ce97fe076d27b4 エラーが発生した
アプリケーション パス: c:\windows\system32\inetsrv\w3wp.exeエラーが発生した
モジュール パス: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll レポート ID: e0c90a5f-0455- 11e3-8f0e-005056891553

デバッグ方法やどこから始めればよいかわかりません。クラッシュが発生しようとすると、サーバー プロセッサの使用率が 100% に跳ね上がり、そのままになります。問題のあるプロセスは w3wp.exe です。私のコードがエラーを生成しているかどうかさえわかりません。IIS7.5 です。任意のポインタをいただければ幸いです。

4

4 に答える 4

81

無制限の再帰 (関数が繰り返し自分自身を呼び出すなど) が原因で、StackOverflow Exception が発生しているようです。これは、通常の try/catch ブロックではキャッチできません。DebugDiagWinDbgを使用して問題を追跡できます。

DebugDiag は、StackOverflowException が発生したときにクラッシュ ダンプを生成するように構成できます。https://www.microsoft.com/en-us/download/details.aspx?id=58210からダウンロードしてください。

  1. DebugDiag を開き、[ルールの追加] をクリックします。
  2. 「クラッシュ」がすでに選択されているはずです。[次へ] をクリックします。
  3. [特定の IIS Web アプリケーション プール] を選択し、[次へ] をクリックします。
  4. アプリケーション プールを選択し、[次へ] をクリックします。
  5. Advanced Configuration ウィンドウが表示されます。[詳細設定] の下の [例外] をクリックします。
  6. [例外の追加] をクリックし、[フル ユーザーダンプ] のアクション タイプで [スタック オーバーフロー] を選択します。
  7. [OK] をクリックして保存し、閉じます。

次に StackOverflowException が発生すると、クラッシュ ダンプが作成されます。次に、ダンプ ファイルを解釈する必要があります。

Windows 用のデバッグ ツールは Windows SDK の一部であり、 http://msdn.microsoft.com/en-US/windows/hardware/gg463009/からダウンロードできます。

  1. WinDbg を使用するには、シンボル ファイルを取得する必要があります。シンボル ファイルをダウンロードし、ローカル フォルダーに配置します。
  2. WinDbg を開きます。[ファイル] メニューの [シンボル ファイルのパス] をクリックします。
  3. [シンボル パス] ボックスに、次のコマンドを入力するようにドキュメントに記載さSRV*your local folder for symbols*http://msdl.microsoft.com/download/symbolsれていますが、シンボル用のローカル フォルダーに配置しただけで問題なく動作しました。
  4. 終了して WinDbg を再度開き、クラッシュ ダンプを開き、DebugDiag によって作成されたダンプ ファイルを見つけます。
  5. コマンド ラインで次のように入力します。.loadby sos clr
  6. 今すぐ入力!CLRStack

結果では、問題が何であるかが明確になるはずです (繰り返し呼び出された関数を示す一連の行が表示される可能性があります)。

于 2013-08-20T13:01:14.487 に答える
2

上記の回答への追加。ユーザーのログイン時にエラーが発生する Explorer 拡張機能を開発します。したがって、ユーザーにとっては「点滅する画面」に見えます(エクスプローラーが起動してクラッシュし、再起動しようとしている間など)。DebugDiag と WinDbg をインストールした別のユーザー アカウントでログインしました。今日 (2014 年 1 月 13 日) のすべての最新の更新を含む .Net 4.0 で Windows 8.1 を使用しています。

オンラインでシンボルを使用して解決しました -シンボル パスとして「SRV* http://msdl.microsoft.com/download/symbols 」を使用します。

于 2014-01-13T14:59:06.130 に答える
0

Event Viewer -> Windows Logs -> System を確認して見つけることができました

アプリケーション プール 'DankAppPool' は、そのアプリケーション プールを処理するプロセスで一連の障害が発生したため、自動的に無効になっています。

その下:

アプリケーション プール 'DankAppPool' を提供するプロセスで、Windows プロセス アクティベーション サービスとの致命的な通信エラーが発生しました。プロセス ID は「5704」でした。データ フィールドにはエラー番号が含まれます。

と:

QueueMonitor サービスが予期せず終了しました。これを 32 回実行しました。次の修正アクションが 60000 ミリ秒で実行されます: サービスを再起動します。

少なくとも QueueMonitor サービスは開始する場所です。

于 2017-10-13T14:17:52.957 に答える