Выбор ответа Senior Spring Boot и автоконфигурация обновлено

Корректная остановка

Вопрос

Под Kubernetes перезапускает под, и часть запросов обрывается с ошибкой. Что включить в Spring Boot?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: server.shutdown=graceful и readiness-проба, чтобы снимать трафик. При graceful shutdown веб-сервер перестаёт принимать новые запросы и даёт текущим завершиться в пределах spring.lifecycle.timeout-per-shutdown-phase.

Варианты ответа

  1. spring.main.lazy-initialization=true, чтобы под быстрее стартовал
  2. server.shutdown=graceful и readiness-проба, чтобы снимать трафикправильный ответ
  3. Увеличить -Xmx, чтобы под не убивали за память при остановке
  4. spring.jpa.open-in-view=false, чтобы соединения закрывались раньше

Разбор

При graceful shutdown веб-сервер перестаёт принимать новые запросы и даёт текущим завершиться в пределах spring.lifecycle.timeout-per-shutdown-phase. Вместе с readiness-пробой (Actuator переводит её в OUT_OF_SERVICE при остановке) и небольшой задержкой preStop это убирает обрывы. С Boot 3.4 graceful включён по умолчанию, в более ранних его нужно включать явно. Ленивая инициализация, память и OSIV на остановку не влияют.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме