7

IIS 6 を使用して、Windows サーバー 2003 Standard x64 で実行されている .net 2.0 Web アプリケーションがあります。

最近、Web サイトのアプリケーション プールがクラッシュし始めましたが、その理由を特定できません。それは週末に起こり始め、ウェブサイトの最新のリリースは数日前でした. 最近、コードや Microsoft の更新など、サーバーに他の変更が加えられていないことを確認しました。

データ ブロックに追加情報がない状態でクラッシュが発生するたびに、イベント ログに次のように表示されます。

エラーが発生しているアプリケーション w3wp.exe、バージョン 6.0.3790.3959、スタンプ 45d691cc、エラーが発生しているモジュール kernel32.dll、バージョン 5.2.3790.4062、スタンプ 462643a7、デバッグ? 0、障害アドレス 0x0000000000027d8d。

これは x64 サーバーで実行されているため、標準のデバッグ診断ツールを使用できません。これは、64 ビット バージョンがありますが、32 ビット モードで実行されている IIS にしか接続されないためです。

Debugging Tools for Windows (x64) を使用してみましたが、w3wp プロセスに接続でき、別のクラッシュを待ちました。ただし、これによりサーバーが非常に遅くなり、使用できなくなったため、サーバーを停止する必要がありました。

IIS クラッシュの原因を特定するには、他にどのような方法を使用できますか?

4

3 に答える 3

5

ASP.NET 2.0 クラッシュのケース スタディ: 未処理の例外についてお読みください。

戦略 1 – 例外をログに記録する
最初の方法 (これはおそらく私が推奨する方法です) は、UnhandledExceptionHandler を作成して、この記事 http://support. microsoft.com/?id=911816 次のようなハンドラーを web.config に追加します。

<system.web>
  <httpModules>
    <add type="WebMonitor.UnhandledExceptionModule, <strong name>"
       name="UnhandledExceptionModule"/>
  </httpModules>
      …
</system.web>   

そして、現在のアプリ ドメインの UnhandledException イベントにイベント ハンドラーをフックします。実際に厳密な名前を付けて GAC に追加する必要はありませんが、複数のアプリケーションで計画する場合は、dll が複数回読み込まれることを避ける必要があります。次にこれらの未処理の例外のいずれかが発生した場合、(未処理の例外ポリシーを変更しない限り) プロセスは終了しますが、問題を修正する可能性は非常に高くなります。

于 2009-06-02T15:15:25.997 に答える
4

Microsoft のデバッグ診断ツール (DebugDiag)がそのトリックを実行します。IIS のメモリ ダンプと分析が提供されます。

于 2010-01-04T20:36:00.137 に答える
3

CPU、メモリ、.NET 固有のカウンターなどを監視するパフォーマンス カウンターを設定できます。詳細は多数ありますが、次の TechNet 記事が役立つ場合があります。

ASP.NET 自体には、アプリケーションの状態を監視するための名前空間全体があります。独自のイベントを作成することも、最も一般的には、デフォルト イベント用にアプリケーションを構成することもできます。この MSDN 記事には、さらに多くの情報があります。

問題が未処理の例外などのアプリケーション コードである場合 (ただし、これが問題である場合は、Windows イベント ログに詳細が表示されると思います)、ツールを使用してそれらをトラップし、レポートすることができます。ELMAHは、私が過去にこのために使用した優れたツールです。これは Web アプリケーション用の Tivo として説明されており、例外の詳細を提供し、何が問題なのかを追跡するのに役立つさまざまな方法を備えています。

于 2009-06-02T15:18:53.010 に答える