
进程还在运行,不代表服务能够处理请求。健康检查应验证关键路径,但也不能过重,否则检查本身会成为负担或造成误判。
1. 区分存活与就绪
存活检查回答进程是否需要重启,就绪检查回答是否应该接收流量。两者失败后的处理方式不同。
2. 选择轻量端点
健康端点应快速返回,不执行大查询或外部网络请求。可检查必要的数据库连接,但应设置严格超时。
3. 合理设置间隔与容忍
根据启动耗时设置 start_period,用 retries 过滤短暂抖动。检查频率过高会增加负载,过低则延迟故障发现。
4. 记录失败原因
健康端点和容器日志应提供可区分的状态,如数据库不可用、迁移未完成或磁盘只读,便于告警后定位。
常见误区
- 只检查端口是否打开
- 健康检查包含昂贵查询
- 启动阶段立即判失败
- 失败就无限自动重启
执行检查清单
- 检查覆盖核心请求路径
- 单次执行足够快
- 超时和重试合理
- 失败原因可观测
总结
好的健康检查既不粉饰故障,也不过度敏感。它应为流量调度和人工排错提供可信信号。