Я сталкиваюсь с очень своеобразной проблемой. Мой tomcat отлично работает на 25% CPU 24/7, но через несколько дней мой процессор стреляет до 60%, и система останавливается и не восстанавливается.
Когда я беру дамп потока во время замедления, почти все потоки заняты какой-то строкой или связанной с ней операцией.
Нет ошибок OutOfMemory или любых исключений, все запросы все еще обрабатываются, но время отклика ухудшается до n-й степени, где даже второй секундный запрос замедляется до 60 секунд и более.
Конфигурация моего сервера следующая:
Ubuntu 12.04.2 LTS
Linux 3.2.0-38-virtual #60-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux
java version "1.7.0_13"
Java(TM) SE Runtime Environment (build 1.7.0_13-b20)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)
export JAVA_OPTS='-server
-Xms18g -Xmx18g
-XX:MaxPermSize=512m
-XX:ThreadStackSize=512
-XX:NewRatio=1
-XX:SurvivorRatio=4
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:+CMSClassUnloadingEnabled
-Xloggc:/usr/tomcat/logs/gc.log
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintTenuringDistribution
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.awt.headless=true'
Нажмите здесь, чтобы загрузить нить dump. Я удалил основную часть потоков и их стекеТех.
Нажмите здесь, чтобы загрузить журнал vmstat
Нажмите здесь, чтобы загрузить журнал gc
Любые идеи относительно причины этого? Благодаря