跳到正文
Elaine Blog
返回

Spring Boot 生产特性:健康检查、指标与优雅停机

Spring 生态与源码

生产可用不仅是接口返回 200。应用必须暴露可控的健康与指标信号,保护管理端点,并在发布时停止接流量、完成在途请求、释放资源。

Table of contents

Open Table of contents

运行健康检查

LabHealthIndicator下载返回依赖状态:

mvn -Dtest=SpringSourceLabTest#healthIndicatorReportsDependencyState test

应用配置只暴露 healthinfometrics,并启用优雅停机。暴露列表不是认证;生产仍要使用独立管理网络、访问控制和 TLS。

存活和就绪含义不同

**Liveness(存活)**回答进程是否需要重启,不应依赖短暂不可用的数据库,否则下游故障会触发重启风暴。**Readiness(就绪)**回答实例是否能接收新流量,可以包含关键依赖和启动预热状态。

健康检查要快速、有超时且不产生副作用。不要执行全表查询或写入业务数据。

指标必须控制基数

Micrometer 用 name、tag 和数值表示指标。接口模板、状态类别适合作为 tag;用户 ID、订单号和原始 URL 会产生高基数,推高存储和查询成本。

至少观测请求率、错误率、延迟分位数、线程与队列、连接池等待、GC 和关键业务结果。告警要对应可执行动作,而不是所有指标越界都叫醒值班人员。

外部配置和密钥

配置有明确优先级:默认值、文件、环境变量、命令行等来源可能覆盖。启动日志可以说明来源和非敏感值,不能输出密码、Token 或私钥。

使用 @ConfigurationProperties 绑定一组有类型配置,并用校验在启动期拒绝非法值。动态刷新只适合确实能安全变化的参数。

优雅停机要有上限

收到终止信号后先变为未就绪,等待负载均衡摘流,再停止接新请求。应用在限定时间内完成在途任务,随后关闭线程池、客户端和连接池。超过期限必须记录未完成任务并退出。

下一步

阅读Spring 6/7 与 Boot 3/4 迁移,用编译、测试和运行证据逐层完成升级。


分享这篇文章:

上一篇
Spring Boot 启动与自动配置源码
下一篇
Spring 6/7 与 Boot 3/4 迁移