2013-11-19 4 views
1

В bash - полезная команда trap. Он перехватывает различные сигналы, такие как SIGKILL, SIGHUP и т. Д. Для обработки.Ловушка SIGTERM от JVM

Итак ... У нас есть проблема, что Tomcat иногда умирает без видимых причин. И - без какой-либо полезной информации в лог-файлах.

Моя идея добавить trap его Java-аналог команды собрать jstack перед JVM с Tomcat умрёт.

Как это сделать в Java? Обратите внимание: я не программист на Java.

Спасибо за любые советы.

ответ

1

JVM (по крайней мере, Oracle) уже устанавливает обработчики сигналов и преобразует сигналы в исключения и другие полезные вещи. См. http://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-VM/html/signals.html.

Обычно, когда Tomcat умирает без журналов, это является признаком нехватки стека или места кучи (Tomcat работает в той же JVM, что и веб-приложения, а плохое приложение может сбой сервера до того, как журналы будут очищены).

Какую версию Tomcat вы используете? Если вы используете Tomcat 6+, вы можете полностью отключить буферизацию журнала, чтобы последние сообщения были очищены, когда они были написаны. См. http://tomcat.apache.org/tomcat-6.0-doc/logging.html.

Для JULI отрицательный буферSize заставит промывки после каждой записи.

+0

В настоящее время мы используем 5.5.23 и log4j в качестве основного инструмента ведения журнала ... Спасибо за подсказку! – setevoy

+0

Время обновления. Некоторое время назад поддерживалась версия 5.5.x. –

+0

Мы не можем досадно, по причинам, не зависящим от нас ... «У нас есть то, что у нас есть». – setevoy

Смежные вопросы