1

私のアプリケーションの 1 つは、Java 1.6 を実行する Tomcat 5.5 の Windows サービス インスタンスで実行されます。SOAP 要求がタイムアウトした場合、アプリケーションが NullPointerException を作成するコードに問題があります。

今朝、SOAP リクエストの反対側のコンポーネントが利用できないという問題がありました。その結果、約 1 万個の NullPointerExceptions が発生しました。失敗したコンポーネントを再度実行した後、例外は停止しました。ただし、アプリケーションのパフォーマンスがまだ遅いことに気付きました。

Tomcat サービスを再起動した後、アプリケーションのパフォーマンスはすぐに改善されました。これは単なる偶然の一致だと思いますが、チームメイトは懐疑的です。

これらすべての NPE が Tomcat 内でパフォーマンスの問題を引き起こした可能性はありますが、例外が停止してからずっと経っていますか?

ありがとう!
IVR アベンジャー

4

3 に答える 3

0

NPE が特に問題を引き起こすとは思いませんが、適切に処理しないと Exception が問題を引き起こす可能性があります。

たとえば、多くの例外があったときに同様の問題が発生しました。すべてのユーザー セッションを含むグローバル セッション オブジェクトがありました。通常、リクエストが終了したらクリーンアップします。ただし、finally ブロックを実行しなかったため、例外が発生した場合にクリーンアップされませんでした。これにより、メモリ リークが発生し、サーバーの速度が低下しました。

Tomcat は一般的に再起動後に高速化するため、改善の度合いによっては正常な場合もあります。

于 2009-09-15T18:46:39.233 に答える
0

Tomcat はすべてのアクティビティをログに記録します。あなたの場合は「1 万個の NullPointerExceptions」です。パフォーマンスを追跡する 1 つの方法は、その例外をキャッチして無視することです。明らかにこれは解決策ではありませんが、何が起こるかを試すことができます。

于 2009-09-16T04:47:12.453 に答える