切换配色
Java 健康检查不只是返回 200
进程存在并不等于服务可用。一个 Java 程序可能已经启动,但数据库连接尚未建立;也可能还能响应 HTTP,却无法完成核心业务。
我使用的三层理解
- 存活:进程没有进入不可恢复状态,编排系统不应立即重启它。
- 就绪:依赖已经准备好,可以开始接收流量。
- 业务探针:从外部走一次最小只读链路,确认代理、应用和依赖能够协作。
把三者塞进一个接口会带来误判。例如短暂数据库抖动不一定需要杀死进程,但应该暂时停止接收新请求。
健康接口应保持克制
健康响应不应泄露连接串、账号、内部路径或完整异常栈。对外只需要稳定状态和必要的组件名称,详细诊断留在受保护日志中。
发布后的验证顺序
我的检查顺序是:先确认 systemd 单元为 active,再访问回环健康接口,然后经过 Nginx 访问公开入口,最后查看一小段脱敏日志。每一层失败都对应不同的排查范围,比只看“启动成功”更可靠。