Spring Boot не выполняет корректное завершение по умолчанию.
Приложение Spring Boot и его контейнер приложения (не контейнер linux) контролируют то, что происходит с существующими соединениями в течение льготного периода завершения. Используемые протоколы и то, как клиент реагирует на «закрытие», также должны сыграть свою роль.
Если вы дойдете до конца льготного периода, тогда все будет полностью сброшено.
Kubernetes
Когда модуль удаляется в k8s , удаление конечной точки модуля из служб запускается одновременно с сигналом SIGTERM
для контейнера (ов). ).
На этом этапе узлы кластера будут перенастроены для удаления любых правил, направляющих new traffi c к модулю Pod. Все существующие TCP-соединения с Pod / контейнерами будут отслеживаться до тех пор, пока они не будут закрыты (клиентом, сервером или сетевым стеком).
Для служб HTTP Keep Alive или HTTP / 2 клиент продолжит работу одна и та же конечная точка Pod, пока не будет сказано закрыть соединение (или оно принудительно сброшено)
App
Основные правила c: на SIGTERM приложение должно:
- Разрешить выполнение транзакций для завершения
- Требуется ли очистка любого приложения
- Прекратить прием новых подключений, на случай, если
- Закройте все неактивные подключения, которые могут (сохранить в силе запросы, веб-сокеты)
Некоторые обстоятельства, которые вы, возможно, не сможете обработать (зависит от клиента)
- Поддержание соединения, которое не завершает запрос в льготный период, не может получить заголовок
Connection: close
. Для этого потребуется закрыть уровень TCP FIN. - Медленный клиент с длительной передачей, с односторонней передачей HTTP, их придется ждать или принудительно закрывать.
Хотя клиенты keepalive должны соблюдать закрытие TCP FIN, каждый клиент реагирует по-своему. Microsoft APIM может быть чувствительным и приводить к ошибке, даже при том, что не было никакого реального воздействия на мир. Лучше всего загрузить свои настройки во время масштабирования, чтобы увидеть, есть ли реальный эффект.
Для получения дополнительной информации о пружинной загрузке см .:
https://github.com/spring-projects/spring-boot/issues/4657 https://github.com/corentin59/spring-boot-graceful-shutdown https://github.com/SchweizerischeBundesbahnen/springboot-graceful-shutdown