Tomcat отключается автоматически - PullRequest
17 голосов
/ 17 июня 2009

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

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

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

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

Ответы [ 10 ]

6 голосов
/ 08 июля 2015

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

5 голосов
/ 17 июня 2009

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

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

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

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

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

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

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

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

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

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

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

После долгих часов, наконец, нашли причину.

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

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

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

2 голосов
/ 30 января 2013

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

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

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

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

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

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

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

1 голос
/ 17 июня 2009

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

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

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

0 голосов
/ 20 июля 2015

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

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

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

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

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

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

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

0 голосов
/ 27 января 2015

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

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

0 голосов
/ 17 июня 2009

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

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

0 голосов
/ 17 июня 2009

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

...