优雅关闭
优雅关闭默认在所有四个嵌入式 Web 服务器(Jetty、Reactor Netty、Tomcat 和 Undertow)以及响应式和基于 servlet 的 Web 应用程序中启用。
它作为关闭应用程序上下文的一部分发生,并在停止 SmartLifecycle
beans 的最早阶段执行。
此停止处理使用超时,它提供了一个宽限期,在此期间允许完成现有请求但不允许新请求。
要配置超时期限,请配置 spring.lifecycle.timeout-per-shutdown-phase
属性,如下例所示:
-
Properties
-
YAML
spring.lifecycle.timeout-per-shutdown-phase=20s
spring:
lifecycle:
timeout-per-shutdown-phase: "20s"
如果您的 IDE 没有发送正确的 SIGTERM 信号,则关闭可能会立即发生而不是优雅关闭。
有关更多详细信息,请参阅您的 IDE 文档。
|
在宽限期内拒绝请求
不允许新请求的具体方式取决于所使用的 Web 服务器。 实现可能会在网络层停止接受请求,或者它们可能会返回带有特定 HTTP 状态码或 HTTP 头的响应。 持久连接的使用也会改变请求停止被接受的方式。
要了解与您的 Web 服务器一起使用的特定方法,请参阅 shutDownGracefully API 文档:TomcatWebServer.shutDownGracefully(GracefulShutdownCallback) 、NettyWebServer.shutDownGracefully(GracefulShutdownCallback) 、JettyWebServer.shutDownGracefully(GracefulShutdownCallback) 或 UndertowWebServer.shutDownGracefully(GracefulShutdownCallback) 。
|
Jetty、Reactor Netty 和 Tomcat 将在网络层停止接受新请求。 Undertow 将接受新连接但立即返回服务不可用(503)响应。