JBoss 4.2.0、EJB、Hibernate を使用する Java アプリケーションがあります。
実稼働サーバーの 1 つで、定期的に OutOfMemory エラーが発生します。jboss およびサーバーのログ ファイルにユーザー定義の例外が記録されています。ユーザーが特定のコードにヒットしたときに、このユーザー定義の例外をコードから意図的にスローします。しかし、ユーザー数と使用量はこの顧客の方が多いです。そのため、400 ~ 500 の例外がスローされます。その後、取得しています
WARN org.jboss.mq.SpyJMSException: No pong received;
失敗した場合に topicConnection を再接続する ExceptionListener を既に実装しています。また、以下のようなソケット例外もあります。
2012-10-12 10:33:57,824 ERROR [org.apache.tomcat.util.net.PoolTcpEndpoint] (http-0.0.0.0-8880-Processor1436) Socket error caused by remote host /125.236.40.205 java.net.SocketException: Connection reset
生成されたヒープ ダンプを分析しました。jmsspyobject 例外によって 4.5 GB のメモリが占有されます。jmx コンソールからスレッド ダンプを取得しました。コピーしたスレッド ダンプを TDA (Thread Dump Analyzer) ツールにロードする必要がありますか?
非常に多くのユーザー定義の例外が OOM の原因ですか? 減らす必要がありますか?またはユーザー定義の例外は OOM エラーの原因ではありませんか?
添付のスレッド ログを見つけてください。jboss スレッドのログを分析するのは初めてです。誰でもこれを行うのを手伝ってもらえますか?
http://www.4shared.com/file/toRiqF1n/perf-info.html
ありがとう。