← 术语图鉴

健康检查

Health Check · 也叫 /healthz / 存活检查 / 探活

一个专门给程序访问的地址,用来回答"服务现在还好吗"。

你可能会说:

  • “怎么知道我的后端是不是挂了?”
  • “部署平台让我填一个 health check 路径,填什么?”

它是什么

服务上线后,要有程序定时确认它还活着:部署平台据此判断新版本是否启动成功、要不要重启,监控据此决定要不要报警。常见做法是提供一个路径(比如 /healthz),正常时返回 200 和一小段状态,异常时返回 503。

好的健康检查会顺手检查最关键的依赖,比如数据库连不连得上,而不只是"进程还在";同时要足够轻,不能每次都做一大堆事。

最容易踩的坑是量错了对象:请求根本没到后端,被前面某一层接住并返回了 200,监控看到的就永远是"一切正常"。所以检查时不只看状态码,还要看返回内容是不是后端给的。

打个比方

像护士定时量体温:不听病人怎么说,只看体温计上的数字。前提是,体温计得真的夹在病人身上。

在这个网站里

兄弟项目 E2E Review 的后端有一个像样的 /healthz:先查一次数据库,正常返回 200 和一段 JSON,数据库连不上返回 503。可是经过正式域名去请求,拿到的却是一张前端网页:前面的转发脚本只转发 /api/ 开头的地址(第 5 课)。

容易搞混的地方

常见误解

健康检查返回 200,服务就是好的

正确理解

先确认这个 200 真的来自你的后端,而不是被前面的代理或兜底页面接住了。

你可以这样告诉 AI

复制下面这段,贴给你的 AI

给这个服务加一个健康检查地址:检查数据库等关键依赖,正常返回 200 和一段 JSON,异常返回 503。再告诉我部署平台和外部监控应该探测哪个地址,并且要校验返回内容,而不只看状态码。

先知道

  • HTTP 状态码——服务器回应每个请求时附带的三位数字,告诉对方这次是成功、找不到,还是出错了。

对比着看

  • 软 404——页面其实不存在,服务器却返回 200,让程序误以为这是一张正常页面。

接着看

  • 反向代理——挡在服务器前面的一层:替后面的服务接收请求,再按规则转交给真正处理它的地方。

在这些课里出现

相关的真实事故