Назад | Перейти на главную страницу

Почему остановка httpd с помощью -k stop убивает экземпляры tomcat?

По какой-то причине каждый раз, когда я останавливаю второй экземпляр httpd, используя

/usr/sbin/httpd -f /otherplace/httpd.conf -k stop

Один или два из моих экземпляров tomcat убиты (удалены из памяти) без каких-либо ошибок или следов того, что происходит.

Я запустил этот второй экземпляр, используя следующую команду:

/usr/sbin/httpd -f /otherplace/httpd.conf -k start

Подробности ниже:

Мои экземпляры Tomcat привязываются к порту 80 на разных IP-адресах. Второй экземпляр httpd привязывается к порту 5634 (к этому порту ничего не привязано). Бывают случаи, когда кота не убивают, это как случайность.

Спасибо за вашу помощь.

Возможно, попробуйте изменить команду SHUTDOWN по умолчанию из server.xml

<Server port="8005" shutdown="SHUTDOWN" debug="0">

к чему-то вроде

<Server port="8005" shutdown="0fbb9aebcbfbef203eca71b6be367859" debug="0">

Все, что отправляет "SHUTDOWN" на порт по умолчанию, остановит tomcat, возможно, ваш httpd отправляет его через соединитель или что-то в этом роде. ссылка 1, ссылка 2

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

Однако, за исключением этого, сценарии обычно «охотятся и убивают», глядя на вывод ps -ef (или аналогичный). В этих случаях сценарии уничтожения легко могут быть слишком агрессивными и уничтожить все соответствующие pid-идентификаторы (или только их родителей).

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

Apache имеет модуль который может пересылать запросы на tomcat. Этот модуль включен? Попробуйте отключить его, если он вам не нужен.