优雅停机
优雅停机,顾名思义,更加优雅的关闭程序。在2.3之前tomcat容器被关闭时会被直接关闭
但在这之后springboot加入了这个新的特性
开启方法:
server: port: 9096 #将停机方式设置为 '优美' shutdown: graceful 默认使用的是:IMMEDIATE (直接关闭)
可选参数:
spring:
#设置生命周期
lifecycle:
#最大等待时间
timeout-per-shutdown-phase: 20s
意思是:最多等待20s,在这个期间不会接受新的请求,但仍会处理正在进行中的请求,如果处理完毕,将关闭(如果没有处理完毕,也会关闭)
不同容器对其处理方式不一样
tomcat 9.0.33+ -> 停止接收请求,客户端新请求等待超时。
Undertow -> 停止接收请求,客户端新请求直接返回 503。
注意:强制杀死进程例如:kill -9不会触发ShutdownHook 事件,也就是说优雅停机会失效
最简单的测试方式是直接使用idea关闭服务器,即可看到控制台打印:
2021-08-26 18:23:49.973 INFO 19884 --- [ionShutdownHook] o.s.b.w.e.undertow.UndertowWebServer : Commencing graceful shutdown. Waiting for active requests to complete
2021-08-26 18:23:49.975 INFO 19884 --- [ionShutdownHook] o.s.b.w.e.undertow.UndertowWebServer : Graceful shutdown complete
2021年8月26日