優雅停機
優雅停機預設情況下在所有四個嵌入式 Web 伺服器(Jetty、Reactor Netty 和 Tomcat)以及響應式和基於 Servlet 的 Web 應用程式中都已啟用。它作為關閉應用程式上下文的一部分發生,並在停止 SmartLifecycle bean 的最早階段執行。此停止處理使用一個超時機制,它提供了一個寬限期,在此期間,現有請求將被允許完成,但不允許新的請求。
要配置超時期限,請配置 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 文件。 |
寬限期內拒絕請求
不允許新請求的確切方式因所使用的 Web 伺服器而異。實現方式可能是在網路層停止接受請求,或者返回一個帶有特定 HTTP 狀態碼或 HTTP 頭的響應。持久連線的使用也會改變停止接受請求的方式。
要了解您的 Web 伺服器使用的具體方法,請參閱 TomcatWebServer.shutDownGracefully(GracefulShutdownCallback)、NettyWebServer.shutDownGracefully(GracefulShutdownCallback) 或 JettyWebServer.shutDownGracefully(GracefulShutdownCallback) 的 shutDownGracefully API 文件。 |
Jetty、Reactor Netty 和 Tomcat 將在網路層停止接受新請求。