Tomcat остановился без какого-либо журнала или любого стека
У нас есть проблемы с Tomcat 5.5, который останавливается ночью на наших производственных серверах (Linux CentOS 4.8), и мы понятия не имеем, почему он останавливается...
В журнале Catalina.out или в журнале приложений нет журнала Tomcat.
Мы пробовали разные вещи, чтобы узнать, почему сервер останавливается:
- настроить Tomcat для создания основного дампа
- инструмент
System.exit()
с javassist, чтобы узнать, был ли вызван метод
- добавить к JVM привязку остановки (с
Runtime.getRuntime().addShutdownHook()
)
Ни один из них не работал, у нас нет дампа ядра, метод Exit и hookdown выключения не вызываются.
Мои выводы:
- VM не завершена правильно, но аварийно завершается без какого-либо журнала.
Любая идея или журнал, чтобы прочитать, почему Tomcat останавливается?
Ответы
Ответ 1
1) Убедитесь, что вы знаете, где перенаправляется stderr, и проверьте, не распечатано ли там что-либо.
2) Проверьте ограничения памяти на Tomcat и количество свободной памяти в системе. Просмотрите системные журналы Linux в разделе /var/log, чтобы узнать, произошло ли что-то подозрительное за время. Например, ядро может случайно убить процесс (почти) без трассировки, если система работает с низким объемом памяти.
Мы запускали 5.5 в производстве в течение многих лет и никогда не имели никаких необъяснимых отключений, FWIW.
Ответ 2
Скорее всего, существует исключение. Это типичное поведение Tomcat, когда это происходит. Например, вы пытаетесь выполнить сериализацию в JSON или XML beans с циклическими зависимостями (но без обработки циклов).
Каждый раз, когда у меня была эта проблема (несколько раз), она всегда была такой. Все остальные остановки обычно регистрируются должным образом (например, OutOfMemory и т.д.).
Этот тип остановок нигде не оставляет следов.
Ответ 3
У Tomcat 7 есть опция внутри каталины, чтобы предотвратить вызов класса System.exit или что-то подобное: http://ci.apache.org/projects/tomcat/tomcat7/docs/security-manager-howto.html.
Возможно, есть аналогичная опция для версии 5.5. Попробуйте документацию.
Есть варианты перенаправления вывода на ту же консоль, что и для запуска Tomcat. Эта информация перенаправляется на журналы при выполнении в системах на базе Unix, в Windows, она остается с консолью, если не перенаправлена.