2

IBMWebsphere7.0.0.19で実行されているスタンドアロンアプリケーションがあります。これはJava6で実行されており、Axis2JARをEARにパックします。'parent last'スタイルのクラスの読み込みがあり、デフォルトでWAS7にパックされているAxisサービスを無効にしました。

最近、6週間以上継続して機能した後、アプリケーションでOOMが発生しました。困惑するのは、アプリケーションが2台の異なるマシンに別々にデプロイされていることです。しかし、1台のマシンだけがダウンしました。2台目のマシンはまだ稼働しています。

WASコンソールを使用してOS、クラスローダーポリシーなどのサーバー構成を確認しましたが、どちらのマシンでも類似しています。

アプリケーションがクラッシュすると、.phdファイルが生成され、Eclipse Memory Analyzer Tool(MAT)を使用して分析しました。分析はスクリーンショットに示されています。

Eclipseメモリ分析ツールの出力

私が正しければ、ブートストラップクラスローダーはAxisConfiguraitonの参照を繰り返しロードして保持しているため、GCは実行時にそれらを収集できません。ただし、その場合は、両方のサーバーがダウンしている必要があります。しかし、1台のサーバーだけがOOMを経験しました。JVMに割り当てられたメモリは、両方のマシンで同じです。

問題がWAS7にあるのか、axis2-kernel-1.4.1.jarにあるのか、それとも他の何かにあるのかはわかりません。

http://www.slideshare.net/leefs/axis2-client-memory-leak
https://issues.apache.org/jira/browse/AXIS2-3870
http://java.dzone.com/articles/12- year-old-bug-jdk-still-out

(リンクは現在の問題を参照していない場合がありますが、単なるポインタです)

誰かが似たようなことを経験したことがありますか?

4

1 に答える 1

0

過去に、Axis 21.4を使用するWebSphere6.1では、メモリの増加とソケットが開いたままになっていることがわかりました。長い間ですが、私のメモでは、少なくともAxis 2 1.5.1へのアップグレードを検討して、開いているソケットでこのバグを修正し、シングルトンが存在する場所で新しいオブジェクトを繰り返し作成しないようにすることを検討する価値があるかもしれません(例:Serviceオブジェクト)。

于 2013-01-16T17:34:43.997 に答える