it-swarm.com.ru

Tomcat отключается автоматически

Я использую Apache и Tomcat на сервере Windows, и с этого утра Tomcat перестает работать без каких-либо журналов. Он не зависает, он просто закрывается.
В Tomcat нет лога, процессор/память - штрафы, в моем коде нет System.Exit

У кого-нибудь когда-нибудь была эта проблема?

Это происходит случайно, через 5-10 минут. Приложение реагирует нормально и иногда, бум .. перестает работать.

ОБНОВЛЕНИЕ: До сих пор нет подсказки. Команда администратора установит веб-приложение на другую коробку ...

16
supersheep

У меня была эта проблема, и я нашел причину по этой ссылке . Мой скрипт для запуска Tomcat содержал последнюю строку tail -f catalina.out. Когда-то я не убивал этот сценарий, после чего командная консоль тайм-аут и уничтожала сценарий со всеми дочерними процессами, включая Tomcat.

6
vierab

Это звучит как сбой JVM. Вы искали журнал аварий JVM? Обычно оно имеет имя типа hs_err_pid * .log и создается в рабочем каталоге JVM.

Если вы найдете такой файл и загрузите его, мы, вероятно, сможем помочь вам.

Некоторые вопросы:

  • Вы недавно изменили версию Java, которую используете?
  • Какую версию Tomcat вы используете?
  • Используете ли вы Tomcat Native (Apache Portable Runtime)?
5
Matt Solnit

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

Сценарий: Tomcat выключается без каких-либо журналов или ошибок

Основная причина моей проблемы: Доступ к синхронизированному методу из задачи с использованием TimerTask

У меня был одноэлементный класс с синхронизированным методом, доступ к которому осуществлялся из различных потоков на основе таймера или действий пользователя Иногда этот метод может занять до нескольких минут. Когда TimerTask некоторое время ожидает этого метода (я полагаю, таймер истек/истекает поток или что-то происходит в фоновом режиме) и в момент снятия блокировки метода Tomcat убивается.

Поэтому я удалил синхронизированное ключевое слово, удалил синглтон и внес некоторые изменения в код для обеспечения безопасности потоков. Тогда проблема исчезла.

Как я узнал: У меня был оператор журнала в первой строке синхронизированного метода, и каждый раз при завершении работы Tomcat я обнаруживал это сообщение в последних нескольких строках.

С уважением, Phanindra Kasturi

2
Phanindra

что нужно искать при отладке такой проблемы:

  • Просмотрите каталог logs ($ Tomcat_ROOT/logs), чтобы убедиться, что ни один из файлов журнала не имеет следов стека
  • Посмотрите сценарий запуска Tomcat, чтобы проверить расположение файлов журналов, чтобы убедиться, что журналы не записываются в другой каталог.
  • Другая причина может заключаться в том, что какой-то другой пользователь/процесс может выдать команду kill -9, которая может уничтожить Tomcat, не давая ему возможности регистрировать ошибки.
1
neesh

Столкнулся с этой проблемой недавно.

Сценарий : Tomcat запущен успешно, но автоматически отключается через 1 час, а иногда это происходит через 1 день, и в журналах Tomcat ничего не появляется.

Проблема : Фактической проблемой было высокое использование памяти и отсутствие свободной памяти SWAP.

Как я нашел решение

Если Tomcat не показывает никаких журналов, то в системных журналах должно быть что-то, поэтому я проверил /var/log/messages, но, поскольку мне было отказано в разрешении, я попробовал /var/log/dmesg и получил это

«Недостаточно памяти: убить процесс 14606 (Java), набрать 106 или принести в жертву ребенка».

В выводе я заметил Swap Memory free 0 K . Выполните команду top, чтобы подтвердить то же самое. Так или иначе, было большое использование памяти, которое заставило ОС уничтожить мой процесс Tomcat.

Проведя часы, наконец, получил причину.

ps -ef | grep Tomcat показал, что для одного и того же приложения выполнялось несколько процессов Tomcat. Похоже, что более ранние завершения работы Tomcat могли не проходить успешно, и процессы не были остановлены даже после завершения работы по какой-то причине, которая вызывала высокое использование памяти.

Итак, убил все запущенные процессы Tomcat, используя kill. Память SWAP была освобождена.

Запустил Tomcat снова, работал нормально. :)

1
Kaushal Dokania

Я заметил CATALINA_OPTS в моем пути, и это было установлено для меньшего размера JVM. Следовательно, сбой и никаких следов журнала Tomcat не было найдено. Сервер автоматически отключается менее чем за 2 часа.

проверьте, CATALINA_OPTS или Java_OPTS - у них могут быть настройки jvm. либо увеличьте их, либо закомментируйте и увеличьте объем подкачки.

0
connect2krish

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

0
akf

«Служба на локальном компьютере запускается, а затем останавливается. Некоторые службы останавливаются автоматически, если они не используются другими службами или программами».

Я прошел через проблему, я попробовал так много способов, чтобы выйти из этой проблемы, и наконец я получил решение следующим образом.

1) Нажмите Выполнить Команда с кнопки запуска.

2) Enter Services.msc затем нажмите OK, вы получите все услуги на вашем компьютере.

3) Выберите ваш сервис и щелкните правой кнопкой мыши на сервис и выберите Свойства

4) Перейдите в Свойства входа в систему и выберите Учетная запись локальной системы затем нажмите OK.

Это будет работать.

0
Niresh S

Иногда это происходит, если какая-то другая программа работает на том же порту. Например скайп. Закройте эту программу, прежде чем запускать Tomcat.

0
Harpreet Saini

Разрешено ли вашим сервлетам или одной из их зависимостей вызывать System.exit ()? (Не уверен, насколько заблокированы виртуальные машины Tomcat в этом смысле)

У меня были разработчики, которые думали, что можно использовать exit (666); при обнаружении необратимой матрицы (что не очень хорошо, но точно так же, как чертовски не смертельно). Arrgh. Возможно, у вас есть какой-то похожий преступник в вашей системе?

0
Macke