質問
時々重い負荷でハングアップする Web アプリケーションがあります。元に戻すには、「dllhost.exe」プロセスを強制終了する必要があります。 誰かが何をすべきか知っていますか?
これは、多くの COM+ オブジェクトを含むクラシック ASP (VBScript) アプリです。
サーバーの構成は次のとおりです。
- インテル Core 2 Duo 2.2 GHz / 4 GB RAM
- Windows Server 2003 Web エディション SP2
- IIS6.0
イベント ログに COM オブジェクトに関連するいくつかのエラーがあります。しかし、なぜ COM オブジェクトのエラーによってサーバー全体がクラッシュするのでしょうか?
COM オブジェクトは、COM オブジェクトとして配布された PowerBuilder オブジェクトです。
IIS 7.0 は IIS 6.0 よりも (はるかに) 安定していますか?
解決
問題の原因は危険な COM オブジェクトのようです。それらを「アプリケーション」にロードしますか、ロードする場合はスレッドセーフですか。それともリクエストごとに使用され、破棄されますか?
はい、数時間ごとにリサイクルすると問題を「隠す」のに役立ちますが、適切にデバッグして修正する必要があります...どの COM オブジェクトが問題であるかを見つけるために分割/征服を試みましたか...実稼働環境ではこれが難しいことは想像できるため、問題をローカルで再現するためにいくつかの強力な自動テストを設定する必要があるため、それに対して何かを行うことができます。
他のヒント
メモリリークがあります:)
このブログ エントリは、IIS のトラブルシューティングに関する私のバイブルです。
http://blogs.msdn.com/david.wang/archive/2005/12/31/HOWTO_Basics_of_IIS6_Troubleshooting.aspx
コードを監査して参照リークの場所を特定できない場合は、24 時間ごとに IIS を再起動してアプリケーションをリサイクルするという方法もあります。これを行うには、コマンドライン スクリプトをサーバー ジョブとしてセットアップするだけです。
イベントログのアプリケーションおよびシステム カテゴリにエラーが記録されている可能性があります。これらのエラーの原因を見つけるか、ここに投稿してみてください。何ができるか見てみましょう:)
編集 :ダニエル・シルヴェイラ メモリリークの可能性がある。どの COM+ オブジェクトを使用しますか?私がサポートしているアプリケーションの Excel でいくつかの問題が発生しました。