LINUX.ORG.RU

Tomcat7 100% CPU

 ,


1

1

День добрый, ЛОР.

Имеется VPS с запущенным java-приложением под tomcat7. С недавних пор внезапно приложение перестало работать, по непонятным причинам. Tomcat при запуске распаковывает war и дальше начинает есть 100% cpu. В логах:

root@server:/var/lib/tomcat7# pwd
/var/lib/tomcat7
root@server:/var/lib/tomcat7# cat logs/catalina.out 
Aug 01, 2013 11:31:03 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Aug 01, 2013 11:31:03 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 750 ms
Aug 01, 2013 11:31:03 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Aug 01, 2013 11:31:03 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.28
root@server:/var/lib/tomcat7# cat logs/localhost.2013-08-01.log 
root@server:/var/lib/tomcat7#

Если указать неправильное подключение к БД, никакой реакции. На сервере Debian 7, openjdk-7, 512 мегабайт оперативной памяти.

root@server:/var/lib/tomcat7# invoke-rc.d tomcat7 stop
Stopping Tomcat servlet engine: tomcat7.
root@server:/var/lib/tomcat7# free -h
             total       used       free     shared    buffers     cached
Mem:          500M       418M        81M         0B        43M       332M
-/+ buffers/cache:        41M       458M
Swap:          11M        44K        11M
root@server:/var/lib/tomcat7# cat /etc/default/tomcat7 | grep JAVA_OPTS
JAVA_OPTS="-Djava.awt.headless=true -Xmx256m -XX:+UseConcMarkSweepGC"
#JAVA_OPTS="${JAVA_OPTS} -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
root@server:/var/lib/tomcat7# invoke-rc.d tomcat7 start
Starting Tomcat servlet engine: tomcat7.
root@server:/var/lib/tomcat7# free -h
             total       used       free     shared    buffers     cached
Mem:          500M       458M        41M         0B        43M       332M
-/+ buffers/cache:        81M       418M
Swap:          11M        44K        11M

Что тут еще можно проверить?

★★★★★

Проверить само приложение?

Попробуй сначала запустить там любое другое - если с ним все ок будет, то нужно копаться в коде, смотреть, почему твое приложение сжирает 100% cpu.

kovrik ★★★★★
()

1) Скорее всего само приложение ведет себя плохо. Использую любой способ сделать дамп потоков и увидишь где он вращается в цикле. Например jvisualvm

2) Сборщик мусора сходит с ума. У тебя 512 МБ памяти, стоит написать что-то большое и из как не бывало. Но у тебя еще и стоит -Xmx256m, что может любой томкат убить при любом нормальном приложении. Тоже используй соответсвующий инструмент чтобы отследить сборку мусора. Например запусти jvm томката с ключами, которые пишут на консоль логи сборщика мусора

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)

У тебя на впс virtuozzo/openvz. Ищи впс на kvm/xen. Java не совместма с первым типом виртуализации.

Legioner ★★★★★
()
Ответ на: комментарий от kovrik

Пробовал томкатовский sample.war - работает. Попробовал другое свое приложение (но оно построено на тех же технологиях) - такая же проблема. Изначально всё работало. Да, я как-то сразу про отладку не подумал, надо будет так попробовать.

orm-i-auga ★★★★★
() автор топика
Ответ на: комментарий от vertexua

Но у тебя еще и стоит -Xmx256m, что может любой томкат убить при любом нормальном приложении

В смысле - мало? По умолчанию там было Xmx128m, но в этом случае частенько приложение падало с нехваткой heap space кажется. Сейчас этот параметр ни на что не влияет.

orm-i-auga ★★★★★
() автор топика
Последнее исправление: orm-i-auga (всего исправлений: 1)
Ответ на: комментарий от orm-i-auga

Приложение может влезать впритык и вызовы сборки мусора могут вызываться слишком часто. А раньше оно у тебя не влезало совсем

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Ну вроде разобрались, что не прав я. У меня была ситуация один в один, томкат просто начинал жрать 100% цпу и всё. Оказалось, что там какой-то хитрый баг в ждк, который проявляется в определенной ситуации в виртуальной машине и фиксить его на тот момент вроде не особо рвались, мне не оставалось ничего другого кроме смены хостера.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Хм, я знаю такое только на 32 битной венде XP

vertexua ★★★★★
()
Ответ на: комментарий от Legioner

Всё оно совместимо :) Зависит от настройки openVZ. У меня в Германии java на сабже крутится - никаких проблем. Памяти, кстати, на том серваке 256 Mb. Но сервак чисто под себя, нагрузка мизерная.

А как в Рашке openVZ настраивают и у некоторых недобросовестных хостеров типа «netburst» - тут ты прав. Java с ними противопоказана.

Вобщем, все зависит от контор и настроек виртуализации.

menangen ★★★★★
()

Попробуйте Oracle Java вместо openjdk. Слышал про аналогичные проблемы на openjdk + tomcat + xen. Думаю, тут даже дело то и не в XEN.

menangen ★★★★★
()
Ответ на: комментарий от menangen

зачем полагаться на хостера если можно сразу взять дроплет на том же digitalocean по мизерным ценам и настроить все под себя?

umren ★★★★★
()

Зачем процессору простаивать? Алсо, если он не справляется — дешевле купить новый, более производительный.

anonymous
()

Swap: 11M 44K 11M

А что так мало свопа? Патрик же сказал: взять размер ОЗУ и помножить на два? :-)

Infra_HDC ★★★★★
()
13 ноября 2013 г.

Наконец нашел время разобраться в проблеме. Оказалось, это бага openjdk-7. И проявлялась она при использовании groovy. Запустил tomcat под openjdk-6.

В последнее время активно отовсюду выпиливаю этот глючный groovy, но всё так сразу не перепишешь.

orm-i-auga ★★★★★
() автор топика

Mem: 500M

Для жабаприложения под томкатом?
Ну я даже не знаю.

Swap: 11M 44K

Да это же многократно пофикшенный 12309!

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от thesis

Mem: 500M

Для жабаприложения под томкатом? Ну я даже не знаю.

Согласен, маловато, но пока вроде тянет, нагрузки там большой нет.

orm-i-auga ★★★★★
() автор топика
Ответ на: комментарий от thesis

На jdk-7? Да, и в принципе любые war без groovy нормально работают.

orm-i-auga ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.