2016-10-20 2 views
0

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

Я также сделал небольшой дайвинг в журналы Tomcat и это лог-файл, который соответствует тому время перезапуска: Tomcat log file

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

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

Thanks

ответ

1

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

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

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

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


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


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

0

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

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

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

Обратитесь к OWASP's recommendations for securing a Tomcat server instance за исправление этой возможной безопасности в целом.

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

Смежные вопросы