新闻详情

新闻详情

首页 / 资讯中心 / 详情

SpringBoot优雅停机与健康检查,生产必备

发布时间:2026/10/2 15:00:52来源:尧图网络
SpringBoot优雅停机与健康检查,生产必备
优雅停机让请求体面地结束默认情况下SpringBoot收到停止信号会立即关闭容器正在处理的请求直接被中断。用户看到的是502或连接重置。优雅停机的思路是收到停止信号后先拒绝新请求给正在处理的请求留出完成时间再关闭应用。配置只需两行。在application.yml中yaml复制下载server: shutdown: graceful spring: lifecycle: timeout-per-shutdown-phase: 30sserver.shutdown: graceful开启优雅停机。timeout-per-shutdown-phase设定最大等待时间超时则强制关闭。当应用收到SIGTERMWeb服务器会停止接受新连接等待活跃请求结束。如果30秒内没处理完才会强制退出。这个机制在Kubernetes里尤其重要。Pod被删除时K8s先发送SIGTERM等待terminationGracePeriodSeconds后发送SIGKILL。如果SpringBoot的优雅停机超时时间小于K8s的宽限期就能保证请求完整处理。否则K8s会在请求处理到一半时杀掉进程。建议将timeout-per-shutdown-phase设为25秒K8s的terminationGracePeriodSeconds设为30秒留出缓冲。健康检查让编排系统准确判断状态SpringBoot Actuator提供了开箱即用的健康检查端点。引入依赖xml复制下载运行dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-actuator/artifactId /dependency默认暴露/actuator/health返回{status:UP}。但生产环境需要更细粒度的探针。Kubernetes区分liveness和readinessliveness判断容器是否活着失败则重启readiness判断容器是否准备好接收流量失败则从Service端点摘除。SpringBoot 2.3支持探针分组。配置yaml复制下载management: endpoint: health: probes: enabled: true show-details: always health: livenessstate: enabled: true readinessstate: enabled: true这样会暴露/actuator/health/liveness和/actuator/health/readiness。liveness检查应用内部状态比如是否死锁readiness检查依赖的外部资源比如数据库、Redis是否可用。如果数据库暂时不可用readiness应返回DOWNK8s会停止向该Pod发流量但不会重启它等依赖恢复后自动重新加入。自定义健康指示器内置检查覆盖了数据库、磁盘、消息队列等常见依赖。如果有自定义组件实现HealthIndicator接口即可java复制下载Component public class CustomHealthIndicator implements HealthIndicator { Override public Health health() { if (isHealthy()) { return Health.up().withDetail(custom, ok).build(); } return Health.down().withDetail(custom, failed).build(); } }这样/actuator/health会包含你的自定义状态。注意liveness探针不应包含外部依赖否则数据库抖动会导致Pod被反复重启反而放大故障。liveness只检查应用自身readiness才检查外部依赖。生产实践建议优雅停机和健康检查要配合使用。K8s的preStop钩子可以加一个短暂sleep等待Service端点更新完成再发送SIGTERM。否则Pod从端点摘除和收到停止信号几乎同时发生可能有少量请求仍被路由过来。加5秒preStop延迟能消除这个窗口。另外健康检查端点不要暴露敏感信息。show-details: always方便调试但生产环境建议设为when-authorized只对内部网络或特定角色开放。Actuator端点也应通过management.server.port独立端口暴露避免和业务端口混用。优雅停机和健康检查不是银弹但它们是生产环境的底线。配置得当发版时用户无感知故障时编排系统能准确判断避免雪崩。花十分钟配好这两项比事后半夜爬起来处理告警划算得多。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

深度学习增强视觉SLAM:突破传统瓶颈的实战指南 2026/10/2 17:21:58

深度学习增强视觉SLAM:突破传统瓶颈的实战指南

1. 视觉SLAM的传统瓶颈到底卡在哪视觉SLAM(Simultaneous Localization and Mapping,同步定位与建图)这件事,说白了就是让一台机器在陌生环境里一边走一边画地图,同时还得知道自己在地图的哪个位置。这个鸡生蛋蛋生鸡的…

阅读更多 →
K9s v0.40.0 “Colon Blow“ 实战:用 Custom Views 与 JSON 解析表达式定制资源列 2026/10/2 17:21:58

K9s v0.40.0 “Colon Blow“ 实战:用 Custom Views 与 JSON 解析表达式定制资源列

云原生容器编排CLI运维 【免费下载链接】k9s 🐶 Kubernetes CLI To Manage Your Clusters In Style! 项目地址: https://gitcode.com/GitHub_Trending/k9s/k9s 点击查看 免费下载 本文以 K9s v0.40.0 发布说明(change_logs/release_v0.40.0.…

阅读更多 →
多智能体集群架构实践:DeepAgents、MCP、A2A与Skills协同工作流 2026/10/2 17:21:58

多智能体集群架构实践:DeepAgents、MCP、A2A与Skills协同工作流

最近我一直在折腾多智能体集群,把LangChain家的DeepAgents、MCP协议、Google阵营的A2A互操作协议,再加Skills知识包四样东西拼到一起,搭了一套能跑完整业务闭环的多智能体集群架构与协同开发工作流。跑通之后最大的感受是:这套组合…

阅读更多 →
HVM1 构建指南:从源码编译、安装到 Nix 打包的完整实践 2026/10/2 17:21:58

HVM1 构建指南:从源码编译、安装到 Nix 打包的完整实践

语言运行时编译器高性能计算 【免费下载链接】HVM1 HVM1 (2022): a massively parallel, optimal functional runtime in Rust 项目地址: https://gitcode.com/GitHub_Trending/hv/HVM1 点击查看 免费下载 HVM1 是 HVM(Higher-order Virtual Machine&am…

阅读更多 →
ABot-World Docker部署指南:Ubuntu与阿里云5分钟一键运行,run.sh完整讲解 2026/10/2 17:21:52

ABot-World Docker部署指南:Ubuntu与阿里云5分钟一键运行,run.sh完整讲解

ABot-World Docker部署指南:Ubuntu与阿里云5分钟一键运行,run.sh完整讲解 【免费下载链接】ABot-World Infinite Interactive World Rollout on a Single Desktop GPU 项目地址: https://gitcode.com/gh_mirrors/ab/ABot-World ABot-World 是一个…

阅读更多 →
【Cover Letter 2】SCI 投稿加分必备,手把手教你写 投稿Cover Letter:用 TaoToken 统一 Key 打通 AI 辅助润色与投稿信生成 2026/10/2 17:21:39

【Cover Letter 2】SCI 投稿加分必备,手把手教你写 投稿Cover Letter:用 TaoToken 统一 Key 打通 AI 辅助润色与投稿信生成

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉