Почему New Relic жрет много памяти tomcat?

Недавно мы начали использовать New Relic для мониторинга нашего производственного webapp, размещенного на сервере tomcat 7.0.6, но мы заметили, что объем памяти этого tomcat постоянно растет и в течение недели он съедает всю память сервера (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' для просмотра использования памяти). Как такое возможно?

6
задан home 3 January 2012 в 14:14
поделиться