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

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

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

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

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

Ответы

Ответ 1

Вероятно, это была проблема с Apache. Мы перезагрузились, немного покрасили конфигурацию Apache и снова работали после этого... Weird

Ответ 2

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

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

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

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

Ответ 3

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

Ответ 4

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

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

Корневая причина для моей проблемы: синхронизированный метод, доступный из задачи с помощью TimerTask

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

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

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

С уважением, Фаниндра Кастури

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

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

Ответ 8

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

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

Ответ 9

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

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

1) Нажмите кнопку Запустить из кнопки "Пуск".

2) Введите Services.msc, затем нажмите "ОК", вы получите все службы на своем компьютере.

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

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

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