为什么New Relic会吃掉很多tomcat内存?

Thi*_*oyd 6 java tomcat memory-leaks jvm-arguments newrelic

最近我们开始使用New Relic来监控我们在tomcat 7.0.6服务器上托管的生产webapp,但我们发现这个tomcat的内存占用量不断增加,并在一周内耗尽所有服务器(AWS高内存双超大型实例)记忆并变得反应迟钝,只有通过重新启动它才能找回它.我们在启动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"
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望这个过程不要使用超过8GB的内存,但在几小时内它会超过10GB,并且在几天之内它会超过20GB并且此服务器上的其他所有内容都会受到影响(我使用'top'来查看内存使用情况) .这怎么可能?

小智 1

我正在分享有关上述事件的更多信息。内存泄漏不在Java堆中。应用程序永远不会出现任何内存不足错误(8 GB 是我们设置的 Java 堆最大限制)。然而,虚拟内存和常驻内存不断增加,直到 RAM 内存耗尽。我们已经确认,使用遗物剂时会发生这种泄漏。版本:New Relic Agent v2.1.2