Spring Boot 优雅停机

本文将带你了解如何在 Spring Boot 应用中配置优雅停机。

1、优雅停机

Spring Boot 2.3 开始,Spring Boot 所支持的四种嵌入式 Web 服务器(Tomcat、Jetty、Undertow 和 Netty)都支持在 Servlet 和响应式平台上的优雅关机功能。

只需在 application.properties 文件中将 server.shutdown 属性设置为 graceful,即可启用优雅停机:

server.shutdown=graceful

在优雅停机阶段,Tomcat、Netty 和 Jetty 会停止接受新的 Web 请求。而 Undertow 会继续接受,但会立即向客户端发送 503 Service Unavailable 响应。

默认情况下,该属性的值等于 immediate,这意味着服务器会立即关闭。

在优雅关机时,可能有一些之前的请求仍在处理中。在这种情况下,服务器会等待这些活动请求在指定时间内完成。

可以使用 spring.lifecycle.timeout-per-shutdown-phase 配置属性来配置超时时间:

spring.lifecycle.timeout-per-shutdown-phase=1m

如上,在优雅停机时,对于那些仍在处理的请求,服务器等待最多一分钟。该属性的默认值为 30 秒。

2、总结

本文介绍了如何在 Spring Boot 中配置优雅停机,以及如何配置服务器停机超时时间。


Ref:https://www.baeldung.com/spring-boot-web-server-shutdown