3

アプリケーションの遅さを調査しており、最終的にクラスター環境のインスタンスの 1 つがダウンします。数週間前、以下のエラーに遭遇しました。

[#|2012-05-11T14:12:03.460-0400|SEVERE|sun-appserver2.1|javax.enterprise.system.container.web|_ThreadID=89;_ThreadName=httpSSLWorkerThread-7311-0;_RequestID=7afaee11-c970-40dd-b5fb-29498af8e512;|StandardWrapperValve[LoginModule]: PWC1406: Servlet.service() for servlet LoginModule threw exception
java.lang.OutOfMemoryError: GC overhead limit exceeded

GC のオーバーヘッド制限を超えていたので、アプリケーションに関係があると考えました。POI を使って Excel にレコードを入れることに非常に集中しているレポートがあるので、それが原因ではないかと思いました。短期的な修正として、次のリリースまで、このレポートにアクセスできる 1 人のユーザーにアクセスしないよう通知しました。

しかし、今日、2 週間後に再びインスタンスの 1 つがダウンし、ログを検索したところ、次のエラーが見つかりました。

[#|2012-06-05T10:31:36.532-0400|SEVERE|sun-appserver2.1|net.jxta.impl.endpoint.mcast.McastTransport|_ThreadID=141;_ThreadName=IP Multicast Listener for mcast://228.8.10.93:31676;_RequestID=90caf76e-b740-4f11-8ffe-8ab88a740569;|Uncaught Throwable in thread :IP Multicast Listener for mcast://228.8.10.93:31676
java.lang.OutOfMemoryError: Java heap space
|#]

GC overhead limit exceeded対の違いに注意してくださいJava heap space。今日見たエラーが、ユーザーがレポートにアクセスしたのと同じ理由で発生したかどうかを調べようとしていますが、そうであればGC overhead limit exceeded.

今日のエラーは、サーバーの構成に関連していると思います。

明確にするのを手伝ってください。

4

2 に答える 2

2

最初のエラー「GC オーバーヘッド」は、GC が CPU サイクルの大部分を占めていることを意味します。ほとんどの場合、98% または 99% を意味し、各実行で解放されるメモリは 1 ~ 2% と非常に少なくなります。

2 番目のエラーは、処理中にアプリケーションがメモリ不足になったことを意味します。

また、POIがメモリを使いすぎているという調査は正しいです。POIには余分なメモリ消費の履歴があります。

SOに関する非常に良い議論に出くわしました

于 2012-06-05T17:23:28.700 に答える
0

同様のトピックに関する良い議論がここにあります。これは基本的に、GC によって多くの時間が消費され、回復されるメモリがほとんどない場合に発生します。

于 2012-06-05T17:24:18.260 に答える