2

Поэтому я настроил некоторые сценарии оболочки для автоматического развертывания нового файла war на сервере Tomcat. Я вызываю шеллскрипт для остановки tomcat (shutdown.sh), а затем убиваю catalina PID, однако я заметил, что для завершения процесса требуется около минуты, и процесс все еще выполняется, когда вызывается мой сценарий запуска. В моем скрипте запуска у меня есть условие, которое запускает tomcat, только когда tomcat не запущен. Поскольку старый процесс все еще активен, tomcat не будет перезапущен, если я сохраню эту логику там. Я всегда мог снять это условие, но я не уверен, что произойдет с двумя котами, работающими одновременно, даже если это всего на несколько секунд.

Мой вопрос убил бы kill -9 чтобы процесс завершился быстрее? Прямо сейчас я использую kill без каких-либо сигналов. Я читал, что в основном это говорит о том, что процесс должен быть немедленно завершен, есть ли что-то, о чем мне нужно беспокоиться, если я немедленно прерву tomcat? (возможно, пространство кучи не освобождается должным образом или что-то в этом роде)

Благодаря тонну!

1 ответ1

3

Куча места будет правильно освобождена, нет проблем. Однако, если у вас есть приложения, для закрытия которых требуется некоторое время, они могут выполнить некоторую работу по очистке базы данных - например, пустые буферы и т.д. Это может быть тем, на что вы хотите обратить внимание.

Я считаю плохой практикой полагаться на ваше приложение, требующее длительного времени выключения, потому что при сбое питания у него тоже не будет этого времени, и вы не сможете просто оставить несовместимую систему. Считайте, что kill -9 действует как сбой питания, только на этом единственном процессе: ОС завершит процесс безоговорочно, без каких-либо шансов очистить данные уровня приложения (например, очистить кэш). Не беспокойтесь об ОС: однажды убитая, она вернет ресурсы, выделенные этим процессом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .