優雅關閉

所有四種嵌入式 Web 伺服器 (Jetty、Reactor Netty、Tomcat 和 Undertow) 以及反應式和基於 Servlet 的 Web 應用程式都支援優雅關閉。它發生在關閉應用程式上下文的過程中,並在停止 SmartLifecycle beans 的最早階段執行。此停止處理使用逾時,以提供寬限期,在此期間將允許現有請求完成,但不允許新的請求。

不允許新請求的確切方式,會根據使用的 Web 伺服器而有所不同。實作可能會在網路層停止接受請求,或者它們可能會傳回具有特定 HTTP 狀態碼或 HTTP 標頭的回應。 持續連線的使用也可能會改變請求停止被接受的方式。

Jetty、Reactor Netty 和 Tomcat 將在網路層停止接受新請求。Undertow 將接受新的連線,但會立即以服務不可用 (503) 回應。

若要啟用優雅關閉,請組態 server.shutdown 屬性,如下列範例所示

  • 屬性

  • YAML

server.shutdown=graceful
server:
  shutdown: "graceful"

若要組態逾時期間,請組態 spring.lifecycle.timeout-per-shutdown-phase 屬性,如下列範例所示

  • 屬性

  • YAML

spring.lifecycle.timeout-per-shutdown-phase=20s
spring:
  lifecycle:
    timeout-per-shutdown-phase: "20s"
如果您使用的 IDE 沒有傳送正確的 SIGTERM 訊號,則搭配 IDE 使用優雅關閉可能無法正常運作。請參閱您的 IDE 文件以取得更多詳細資訊。