6

最近、New Relic を使用して tomcat 7.0.6 サーバーでホストされている実稼働 Web アプリケーションを監視し始めましたが、この tomcat のメモリ フットプリントが継続的に増加し、1 週間以内にすべてのサーバー (AWS High-Memory Double Extra Large Instance) を使い果たすことがわかりました。 ) メモリが応答しなくなった場合、元に戻す唯一の方法は、再起動することです。Tomcat の起動中に Xms および Xmx 引数を提供しますが、数時間以内に Tomcat プロセスのメモリ使用量が Xmx 値を超え、すべてのサーバー メモリがなくなるまで増加し続けます。プロセスコマンドは次のとおりです。

/usr/java/jdk1.6.0_24//bin/java
    -Djava.util.logging.config.file=/xxx/xxx/xxx/xxx/apache-tomcat-7.0.6/conf/logging.properties
    -Xms8192m
    -Xmx8192m
    -javaagent:/xxx/xxx/xxx/xxx/apache-tomcat-7.0.6/newrelic/newrelic.jar
    -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
    -Duser.timezone=Asia/Calcutta
    -Djava.endorsed.dirs=/xxx/xxx/xxx/xxx/apache-tomcat-7.0.6/endorsed
    -classpath /xxx/xxx/xxx/xxx/apache-tomcat-7.0.6/bin/bootstrap.jar:/xxx/xxx/xxx/xxx/apache-tomcat-7.0.6/bin/tomcat-juli.jar
    -Dcatalina.base=/xxx/xxx/xxx/xxx/apache-tomcat-7.0.6
    -Dcatalina.home=/xxx/xxx/xxx/xxx/apache-tomcat-7.0.6
    -Djava.io.tmpdir=/xxx/xxx/xxx/xxx/apache-tomcat-7.0.6/temp org.apache.catalina.startup.Bootstrap start"

理想的には、このプロセスが 8 GB を超えるメモリを使用しないことを期待しますが、数時間以内に 10 GB を超え、数日以内に 20 GB を超え、このサーバー上の他のすべてが影響を受けます (メモリ使用量を確認するには「top」を使用します)。 . これはどのように可能ですか?

4

3 に答える 3

4

Sun/Oracle JVM に影響する問題があり、非ヒープ(ネイティブ) メモリの無制限の増加として現れます。newrelic Java エージェント バージョン 2.16+ には、共通セクションの newrelic.yml ファイルのクラス変換にシャットダウン遅延を追加することによる回避策があります。

  class_transformer:
    shutdown_delay: 3600

変更履歴より

まれにネイティブ メモリ リークを引き起こす Oracle JVM バグの回避策

まれに、クラスがエージェントによってインターセプトされたときに、Oracle JVM が (ヒープ領域ではなく) ネイティブ OS メモリをリークすることがあります。この設定は、指定された秒数後にロードされるクラスのインターセプトをオフにします。エージェントは、この時間より前にロードされたクラスを引き続き監視します。

于 2013-05-06T21:05:26.400 に答える
1

上記の報告されたインシデントについて、さらに詳しい情報を共有しています。メモリ リークは Java ヒープにはありません。アプリケーションが OUT OF MEMORY エラーに達することはありません (8 GB は、設定した Java ヒープの最大制限です)。ただし、仮想メモリと常駐メモリは、RAM がメモリ不足になるまで増加し続けます。レリックエージェントを使用した場合に発生することを確認しております。バージョン:New Relic Agent v2.1.2

于 2012-01-04T06:24:08.083 に答える
1

ご迷惑おかけして申し訳ありません。私たち (New Relic) はこの問題を調査していますが、最初の提案は、クラスの計測方法に大幅な変更を加えた最新の 2.2.1 バージョンの Java エージェントを試してみることです。

詳しい情報が入り次第、こちらでフォローアップします。

于 2012-01-04T18:17:06.457 に答える