Tomcat перезапускается с ошибками (выход 143), запускается, а затем через некоторое время выходит из строя

Я впервые задаю вопрос о переполнении стека. Недавно я настроил виртуальный частный сервер Ubuntu 16.04 для размещения веб-приложения. Я запускаю ngnix на сервере Tomcat, который читает и записывает в базу данных MySQL. Приложение работает нормально, за исключением того факта, что Tomcat время от времени перезагружается, что приводит к ошибке 500, которая возникает из-за «обрыва канала», когда кто-либо пытается войти в систему (т.е. установить соединение с базой данных). Я опубликую изображение 500 в следующий раз, когда это произойдет. Я вошел в свой vps и посмотрел на свое сообщение о перезапуске Tomcat. Вот что я вижу: статусное сообщение Tomcat.

Я также немного погрузился в журналы Tomcat, и это файл журнала, который соответствует этому времени перезапуска: Файл журнала Tomcat

Я провел небольшое исследование, чтобы попытаться решить эту проблему самостоятельно, но безуспешно. Я считаю, что exit = 143 - это завершение процесса другой программой или самой системой. Я также немного переместил mysql-connector-java.jar. Я читал, что он должен находиться в каталоге Tomcat / lib, а не в WEB-INF веб-приложения. Возможно мне нужно настроить другие параметры.

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

Спасибо


person Jado    schedule 20.10.2016    source источник


Ответы (2)


Посмотрите на временную шкалу. Он начинается с 19:49:23.766 в журнале Tomcat с этим сообщением:

Через порт выключения получена действительная команда выключения. Остановка экземпляра сервера.

Код выхода 143 является результатом этого отключения и ни на что не указывает.

Вам нужно ответить на следующий вопрос: Кто отправил эту команду выключения и почему?


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


Теория. Есть ли у вас запущенная служба мониторинга, которая проверяет работу вашего приложения? Обнаруживает ли этот мониторинг превышение времени ожидания подключения к базе данных, классифицирует ли это как зависшее веб-приложение и автоматически перезапускает Tomcat?

person Andreas    schedule 20.10.2016

Хотя я не думаю, что смогу понять суть проблемы, которая у вас возникла с вашей общей настройкой, учитывая небольшой отрывок из ваших файлов журнала, одна вещь бросается в глаза. В журнале Tomcat есть строка

A valid shutdown command was received via the shutdown port. Stopping the server instance.

Это объясняет, почему сервер был перезапущен. Кто-то (какой-то внешний процесс, злоумышленник, сценарий или что-то еще. Может быть что угодно, в зависимости от настройки вашего сервера) отправил команду выключения на порт выключения Tomcat (по умолчанию 8005), в результате чего Tomcat выключился.

Обратитесь к рекомендациям OWASP по защите экземпляра сервера Tomcat, чтобы исправить эту возможную безопасность в целом.

Что касается мнимых проблем с Hibernate, которые у вас есть, я не получил достаточно информации из ваших журналов, чтобы сделать полезное заявление. Но вы можете оставить банку MySQL в Tomcat / lib, поскольку это не основная причина вашей проблемы.

person Roland Krüger    schedule 20.10.2016