很多情况下,在应用程序启动后需要关闭时候,直接shutdown会导致正在处理的请求中断,而采用graceful shutdown可以实现不再接受新的请求,并将已接收到的请求处理完毕再关闭程序释放资源
Springboot graceful shutdown应用场景
Springboot中提供了优雅停机方案,在关闭阶段会给应用程序一个宽限期,然后不再处理新的请求处理,并将已经接收到的请求在宽限期内结束。对触发停机后再接收到的请求处理方式取决于不同的web服务器:Jetty, Reactor Netty, Tomcat将会在网络层停滞请求接收,而Undertow将会接受请求,但会直接返回服务器不可用的503状态码
使用方式
开启优雅停机
server: shutdown: "graceful"
还需要配置一个宽限期
spring: lifecycle: time-per-shutdown-phase :"20s"