TIL

Spring Boot — Graceful Shutdown

동작과 설정

설정 키 기본값 역할
server.shutdown graceful graceful = 드레이닝 후 종료 / immediate = 즉시 종료
spring.lifecycle.timeout-per-shutdown-phase 30s 유예 시간 — in-flight 요청을 이 안에서 완료, 초과 시 강제 종료

Kubernetes Pod 종료와 맞물리기

# Deployment의 pod spec
terminationGracePeriodSeconds: 45          # SIGKILL까지의 총 예산 (기본 30)
containers:
  - name: app
    lifecycle:
      preStop:
        exec: { command: ["sh", "-c", "sleep 5"] }   # endpoint 제거 전파 대기 (K8s 1.29+는 sleep 액션 네이티브 지원)
# application.yml: server.shutdown=graceful, spring.lifecycle.timeout-per-shutdown-phase=30s