Файл аварийного дампа Tomcat или JVM? - PullRequest
3 голосов
/ 20 февраля 2010

Наш сервер Tomcat неожиданно завершил работу. (Он работает как служба Windows; журнал системных событий показывает ошибку: Код события 7034).

Где найти дамп сбоя JVM или какой-то признак того, почему служба Tomcat фактически перестала работать?

Я вижу ряд исключений в журнале наших приложений (наша веб-инфраструктура, Wicket не может сериализовать некоторые из наших страниц на диск из-за NotSerializableException). Я предполагаю, что это побочный эффект службы, пытающейся завершить работу (потому что у нас есть несериализуемые объекты на наших страницах). Мне не ясно, что вызвало закрытие службы.

Я проверил следующие места:

  • журнал приложений
  • журнал доступа
  • стандартный журнал
  • журнал stderr
  • tomcat.log
  • журнал jakarta_service

Я не вижу ничего, что указывало бы на то, что Tomcat завершает работу или что произошла ошибка виртуальной машины. Я вижу некоторые сетевые ошибки, связанные с SQL Server, в событии приложения Windows, но они произошли почти 20 минут спустя.

Есть подсказки?

Ответы [ 2 ]

0 голосов
/ 19 марта 2012

Убедитесь, что ваш кот не работает в режиме отладки. Если это так, вам нужно отключить отладку, чтобы остановить службу Tomcat.

Вы можете видеть это в вашем tomcat6.conf. Вы должны прокомментировать строку, похожую на эту:

#JAVA_OPTS="-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4142,suspend=n"

Вы можете stop/restart ваш кот.

Bye

0 голосов
/ 21 апреля 2010

У меня такая же проблема.Вы получите файл hs_err, когда будет сделан jni-вызов (к собственному коду) и там будет обнаружена ошибка (например, незаконный доступ к памяти или ошибка сегментации).Мы не находим файл hs_err, и при этом ошибка не отображается на stderr, как это обычно бывает в этой ситуации.Мы знаем, что состояние выхода процесса Tomcat было 134 (x86), что, как я полагаю, указывает на сигнал прерывания.Это произойдет, если вы вызовете метод stdlib 'abort ()' в своем коде.Я считаю, что где-то в нашем родном коде jni мы называем abort ().К сожалению, нет хорошего способа найти где.Если бы я мог сгенерировать дамп ядра из Tomcat, когда он выйдет, у меня было бы чем заняться.

Маловероятно, что вызванное исключение Java вызовет отключение Tomcat.У вас есть какой-нибудь код JNI и возможно ли, что вы вызываете abort ()?Кроме того, возможно ли, что у вас есть вызов Java где-нибудь в System.exit ()?

...