Skip to content

Java 健康检查不只是返回 200

进程存在并不等于服务可用。一个 Java 程序可能已经启动,但数据库连接尚未建立;也可能还能响应 HTTP,却无法完成核心业务。

我使用的三层理解

  • 存活:进程没有进入不可恢复状态,编排系统不应立即重启它。
  • 就绪:依赖已经准备好,可以开始接收流量。
  • 业务探针:从外部走一次最小只读链路,确认代理、应用和依赖能够协作。

把三者塞进一个接口会带来误判。例如短暂数据库抖动不一定需要杀死进程,但应该暂时停止接收新请求。

健康接口应保持克制

健康响应不应泄露连接串、账号、内部路径或完整异常栈。对外只需要稳定状态和必要的组件名称,详细诊断留在受保护日志中。

发布后的验证顺序

我的检查顺序是:先确认 systemd 单元为 active,再访问回环健康接口,然后经过 Nginx 访问公开入口,最后查看一小段脱敏日志。每一层失败都对应不同的排查范围,比只看“启动成功”更可靠。