Не уверен, что это вопрос ServerFault или StackOverflow. Я публикую его здесь, так как это больше связано с сервером.
Мы запускаем приложение SpringBoot (Java), работающее в контейнере Tomcat на сервере Ubuntu (как REST API). Как и ожидалось, время от времени нам потребуется загрузить новую версию приложения, и мне интересно, какой метод перезапуска является предпочтительным?
В настоящее время мы используем сценарий оболочки, который обнаруживает, что файл JAR с определенным именем присутствует в определенном каталоге, и, если он найден, останавливает процесс, перемещает новый файл, создает резервную копию старого файла и перезапускает приложение, используя новый JAR-файл.
Проблема в том, что иногда Tomcat может потребоваться до 15 секунд для перезапуска, в результате чего служба REST остается отключенной на это время. Времени не много, но 15 секунд в нашем мире - это вечность.
Я в основном спрашиваю, хороший это или ужасный способ сделать это, и есть ли что-то, что можно сделать иначе, чтобы ускорить перезагрузку приложения REST.
Заранее спасибо за любые указатели ...
Я мог бы предложить простое решение, вы должны поставить обратный прокси перед tomcat, например nginx
, запустите новый экземпляр tomcat
на другом порту изменить nginx
конфигурацию восходящего потока и перезагрузите ее.