2016-03-02 9 views
0

Tomcat (8.0.14-1 + deb8u1) на производственном сервере внезапно запускает весь процессор, что можно сделать, чтобы диагностировать причину? Я знаю, что профилировщик может пригодиться, но не в производственной среде, каких-либо идей?Tomcat, пикирующий и потребляющий все доступные CPU

Дополнительная информация: "top" command execution/lsb_release

+0

Память/вывод jmap по адресу: http://pastebin.com/UVJzfn1u – gvasquez

+0

Результаты потоков/jstack на http://pastebin.com/282hfyvv – gvasquez

+0

JVM: версия java "1.7.0_91 " Окружающая среда OpenJDK (IcedTea 2.6.3) (7u91-2.6.3-1 ~ deb8u1) 64-разрядная виртуальная машина OpenJDK (сборка 24.91-b01, смешанный режим) – gvasquez

ответ

1

@Gonzalo Я видел, как вы ввели почти все necesary информацию, но я напишу свой ответ от «начала», так что это может быть полезно для менее опытных пользователей, которые наткнулись на него.

  1. Вы должны взять свалку потока. Вы можете сделать это либо:

    • убить -3 PID
    • jstack -F PID
  2. Посмотрите на вывод команды top или htop.

    • Для top нажмите «Shift + H», чтобы показать темы (Вы можете также начать топ с top -p PID, чтобы отфильтровать нерелевантные процессы)
    • Найти, какой поток потребляет процессор и записать идентификатор потока
    • Идентификатор потока находится в десятичной форме, поэтому вам нужно преобразовать его в шестнадцатеричный.
  3. Открыть дамп потока и посмотреть его шестнадцатеричную резьбу. Это нить, которая потребляет процессор

PS: Ваш дамп выглядит очень странно, и он пропускает идентификаторы потоков. Резьбовые штабели должны начинаться как:

"Finalizer" daemon prio=8 tid=0x02b3d000 nid=0x898 in Object.wait() [0x02d0f000] 
...stack traces here... 

где nid является идентификатор потока шестнадцатеричным вы нашли из топа/Htop.

Попробуйте принимать дамп с kill -3

+0

Добавлен как комментарий в вопрос версии JVM, только в случай это имеет значение. – gvasquez

+0

Пробовал получать кучу дампа с kill -3, но не работал, jstack работал, покупал только с PID из «ps», а не из нити (через верх + shift-h) – gvasquez

+0

Вы должны взять дамп с PID процесса JVM, а не потока. Вам нужно указать идентификатор потока, чтобы найти, какая stacktrace соответствует использованию ЦП –

0

мы имеем тот же вопрос, на пару наших серверов. проблема также возникает на серверах tomcat без веб-приложений, просто обслуживая статические страницы. Использование процессора вдруг раскручивает до 200% и никогда не нисходит

этот вопрос никогда не появился до нашего недавнего обновления до 8.0.14 и 8_u_121

настройки следующим образом:

  • Debian 8.1, последние патчи
  • кот 8.0.14
  • Oracle JVM 8_u_121 (последний с этой даты)
  • барана 2,4 и 8 Гб (в зависимости от серверов)
  • http/1.1 на 80, перенаправлено на 443; nio1 разъем 443 с HTTPS (на самом деле на 8080 и 8443, межсетевой экран отображает 80 на 8080 и 443 в 8443)

, когда проблема возникает симптомы заключаются в следующем:

  • использования процессора 200% по процесс «ява», не обрушится
  • потребление
  • барана нормального входа
  • нет журнала в apps.log
  • около 20 записей в catalina.out следующим образом:

30-Jan-2017 10: 15: 38,479 INFO [HTTP-NiO-8080-Exec-16] org.apache.coyote.http11.AbstractHttp11Processor.process Ошибка синтаксического анализа HTTP заголовок запроса Примечание: дальнейшие вхождения Анализ HTTP-заголовков ошибки будут регистрироваться на уровне DEBUG. 30-янв-2017 10: 15: 40.022 INFO [http-nio-8080-exec-17] org.apache.coyote.http11.AbstractHttp11Processor.process Анализ ошибок Заголовок HTTP-запроса Примечание: в дальнейшем появляются разбор заголовка HTTP ошибки будут регистрироваться на уровне DEBUG. 30-Jan-2017 10: 15: 41,574 INFO [HTTP-NiO-8080-Exec-18] разборе org.apache.coyote.http11.AbstractHttp11Processor.process Ошибка заголовка запроса HTTP

мы были похожи сообщения об ошибках в Catalina.out при обновлении до 8.0.14. Это было потому, что этот релиз больше не принимал unescaped {и} в url. Мы исправили это, изменив наш клиентский код, чтобы кодировать эти символы в% 4B и% 4D. В то время не было проблемы с процессором