最近我们开始使用 New Relic 来监控我们托管在 tomcat 7.0.6 服务器上的生产 webapp,但我们观察到这个 tomcat 的内存占用不断增加,并且在一周内它吃光了所有服务器(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"
理想情况下,我希望这个过程不使用超过 8GB 的内存,但在几个小时内它会超过 10GB,并且在几天内它会超过 20GB,并且该服务器上的所有其他内容都会因此受到影响(我使用“顶部”来查看内存使用情况) . 这怎么可能?