2012-01-03 12 views
6

最近、New Relicを使用してtomcat 7.0.6サーバーでホストされているプロダクションWebAppを監視し始めましたが、このTomcatのメモリフットプリントは継続的に増加しており、1週間以内にすべてのサーバー(AWS High-Memory Double Extra大規模なインスタンス)のメモリと応答しなくなる、それを元通りにする方法はそれを再起動することです。 Tomcatを起動する間にXms & Xmx引数を提供しますが、数時間以内にTomcatプロセスのメモリ使用量がXmx値を超え、すべてのサーバーメモリが終了するまで増加し続けます。ここでは、プロセスのコマンドです:なぜ新RelicはTomcatのメモリをたくさん食べているのですか?

/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ギガバイト以上のものを使用しないように、このプロセスを期待するだろうが、時間以内に、それは10ギガバイト以上になると、数日以内に、それは20ギガバイト以上になるとのために、このサーバー上の他のすべてが苦しんでいますそれは(私はメモリ使用量を見るために 'トップ'を使う)。これはどのように可能ですか?

+0

私はNew RelicのJavaエージェントを担当するエンジニアです。ご希望の場合は、[email protected]でこの問題のサポートチケットを開くことができます。 Javaエージェントのどのバージョンを使用していますか?また、システムメモリまたはヒープメモリのメモリが爆発していますか? –

+0

私もこの問題を抱えているようですので、あなたは一人ではありません。私はこの週末ニューレキシックとのサポートリクエストを提出しました。私たちのケースでは、TomcatはOutOfMemory例外で死ぬだけです。 – JBCP

+0

私にも起こる –

答えて

1

私は上記の報告された事件に関する情報をいくつか共有しています。メモリリークはJavaヒープにはありません。アプリケーションはOUT OF MEMORYエラーに達しません(8 GBはJavaヒープ上限を超えています)。しかし、仮想メモリと常駐メモリは、RAMがメモリ不足になるまで増加を続けます。 遺物を使用すると、このリークが発生することが確認されています。 バージョン:New Relic Agent v2.1.2

1

ご迷惑をおかけして申し訳ありません。私たち(New Relic)が問題を調査していますが、最初にJavaエージェントの2.2.1バージョンを試してみてください。

さらに詳しい情報がある場合は、ここでフォローアップします。

+0

これに関する更新情報はありますか? –

+0

2.2.1と2.3.1を試しましたが、それはまだ起こっています。 – ThinkFloyd

+2

この問題も発生しています。そして私は2.6でテストしました – ZacharyP

4

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

を漏らす原因となるOracleのJVMのバグの回避策changelog

から

class_transformer: 
    shutdown_delay: 3600 

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

関連する問題