Недавно мы начали использовать New Relic для мониторинга нашего производственного веб-приложения, размещенного на сервере tomcat 7.0.6, но мы заметили, что объем памяти этого кота постоянно увеличивается, и в течение недели он поглощает весь сервер (AWS High-Memory Double Extra Large Instance ) память и перестает отвечать на запросы, единственный способ вернуть ее — перезапустить. Мы предоставляем аргументы Xms и Xmx при запуске tomcat, но в течение нескольких часов использование памяти процессом 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 ГБ памяти, но в течение нескольких часов он превысит 10 ГБ, а в течение нескольких дней превысит 20 ГБ, и из-за этого страдает все остальное на этом сервере (я использую «top», чтобы увидеть использование памяти) . Как это возможно?