You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询Spring Boot应用优雅停机前需清理及重点关注的资源清单

Spring Boot 优雅停机需清理/关注的资源清单
  • 数据库连接池:确保所有活跃连接被正确关闭,避免数据库端残留无效连接。Spring Boot默认的HikariCP会在关闭时自动清理,但自定义连接池配置时,要确认shutdown()方法被触发执行。
  • 线程池与异步任务:
    • 根据业务需求选择等待当前异步任务完成(调用ThreadPoolTaskExecutor.shutdown())或强制终止(调用shutdownNow()),避免任务执行到一半中断引发数据不一致。
    • 清空线程池中的待执行任务队列,释放占用的线程资源。
  • 消息队列消费者:
    • 停止从MQ(如RabbitMQ、Kafka)拉取新消息,等待正在处理的消息完成后再关闭消费者,防止消息丢失或重复消费。
    • Kafka需提交最后一次消费的偏移量,RabbitMQ要确认消息ACK操作完成。
  • 文件资源:
    • 关闭所有打开的文件输入/输出流,释放操作系统文件句柄,避免资源泄漏。
    • 按需清理或归档应用运行中生成的临时文件(如缓存文件、临时报表)。
  • 网络长连接:
    • 主动关闭WebSocket、HTTP长连接,通知客户端服务即将停机,避免客户端收到异常响应。
    • 关闭对外调用的客户端连接池(如RestTemplate、Feign的连接池),释放网络资源。
  • 定时任务:
    • 停止所有定时任务(如Spring Task、Quartz),防止停机过程中任务触发导致业务逻辑混乱。
    • Quartz需调用Scheduler.shutdown()停止调度器,确保任务调度完全终止。
  • 缓存资源:
    • 本地缓存(如Caffeine、Guava Cache)可按需将数据持久化后清理实例;分布式缓存(如Redis)需关闭客户端连接池,确保无未完成的命令请求。
  • 自定义与第三方资源:
    • 关闭第三方服务(如短信网关、支付接口)的客户端连接,停止或确认正在进行的请求完成。
    • 释放自定义的全局锁、共享内存等资源,避免影响其他服务或后续重启。
  • Spring容器销毁:
    • 确保实现DisposableBean接口或标注@PreDestroy注解的Bean执行销毁逻辑,清理自身持有的资源。
    • 触发Spring ApplicationContext关闭,完成全容器Bean的销毁流程。

内容的提问来源于stack exchange,提问作者Dishant Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 00:00:55