优雅停机:当我们停止当前springboot服务时,正在执行的业务操作不受影响,继续完成请求的处理,但是会拒绝新的请求
springboot在2.3版本中加入了优雅停机的特性,支持tomcat、jetty等web服务器
配置如下:
# 开启优雅停止 Web 容器,默认为 IMMEDIATE:立即停止
server:
shutdown: graceful
# 最大等待时间
spring:
lifecycle:
timeout-per-shutdown-phase: 30s
在优雅停机前我们可以将服务器请求负载到其他服务器,执行kill -2 后,已经进入当前服务器的流量会继续完成请求,此刻新的流量会负载到其他服务器。
我们在日常线上的生产环境可以使用此方案。
注:优雅停机的特性针对tomcat版本在9.0以上
也可不实用kill 暴力停止,使用Actuator来优雅的关闭spring容器,在项目中添加actuator
依赖,然后再添加一些配置来暴露 actuator 的 shutdown 接口。当停机时直接调用 http://localhost:8080/actuator/shutdown 即可实现优雅停机,会返回如下结果
{
"message": "Shutting down, bye..."
}