优雅停机
优雅停机默认情况下在所有四个嵌入式 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 将在网络层停止接受新请求。