2

JMXを使用して監視している、何時間(10〜100)実行する必要のあるアプリケーションを作成しています。

しかし、しばらくして、私は2つのことを発見しました。

  • com.sun.jmx.remote.internal.ArrayNotificationBuffer#1大きくなる:20時間後、それは約10MBです-私がそれを始めたとき、それは1MBより小さかった
  • より多くのスレッドRMI TCP Accept-0(または他の数)RMI-TCP-Connection(44)-[IP]があり、時間の経過とともにインスタンス化されます。

アプリケーションへのさまざまな接続と関係があると思いますが、現在は1回だけ接続していますが、一部の接続はまだ開いているようです。

どうしてそれができるのでしょうか?どうすればこれを修正できますか?

4

1 に答える 1

1

ArrayNotificationBufferのソースコードコメントをざっと見ていて、かなりの量のJMXトレースログが含まれているので、JMXトレースを有効にして、何が起こっているのかをよりよく理解することをお勧めします。

この既知のバグがあなたに影響を及ぼしていることに気付くかもしれません。バグレポートは、問題が長続きする接続で観察されることを示しています。いくつかの回避策が記載されていますが、実際的である場合、定期的に切断して再接続するという単純な回避策はありません。幸いなことに、Java7にはこのパッチが適用されているようですが、リリースされたビルドに到達したかどうかはまだわかりません。

また、JMX通知リスナーを登録する場合は、それらが継続的かつ迅速に通知を処理していることを確認します。そうしないと、この症状が発生する可能性もあります。

于 2012-08-09T13:23:23.617 に答える