springboot3.0.6官方文档阅读系列:如何优雅的shutdown【graceful shutdown】

本文档介绍了SpringBoot如何优雅地关闭应用程序,特别是其内置的Jetty、Reactor Netty、Tomcat和Undertow web服务器。详细讲解了从Tomcat 9.0.33版本开始支持的优雅关闭特性,以及如何通过`server.shutdown`和`spring.lifecycle.timeout-per-shutdown-phase`属性进行配置。实践中提到了避免使用`kill -9`信号,而是使用`kill -2`来发送中断信号以实现优雅关闭。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

翻译官网

springboot内置四种web server(Jetty, Reactor Netty, Tomcat, and Undertow) 以及响应式和基于servlet的web应用全部支持优雅的shutdown,作为停止application上下文的一部分,并且在停止SmartLifecycle beans的早期阶段停止。停止进程会有一个超时时间,在这段时间内已经存在的请求将会被允许完成,但是新请求是不允许的。新请求不被允许的确切方式取决于web server的用法。

tomcat9.0.33及以后得版本支持graceful shutdown

配置graceful shutdown,通过server.shutdown,配置如下:

  • yaml
server:
  shutdown: "graceful"
  • properties
server.shutdown=graceful

配置超时时间,通过spring.lifecycle.timeout-per-shutdown-phase属性,配置如下:

  • yaml
spring:
  lifecycle:
    timeout-per-shutdown-phase: "20s"
  • properties
spring.lifecycle.timeout-per-shutdown-phase=20s

如果你的IDE没有发送正确的SIGTERM信号,graceful shutdown可能没法正常使用,请参考IDE文档了解更多详细信息。

实践

通常我们使用kill -9 pid来结束java进程,但是想要graceful shutdown应用时,就不能再暴力的使用kill -9来结束进程了,除了在配置文件中打开配置还需要使用kill -2 pid来给应用发送中断信号。

拓展
linux中kill的信号量
kill -9 强制中断进程
kill -2 类似于ctrl+c,等程序执行完毕,结束进程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值