容器健康检查:进程活着不等于可以接流量
【摘要】 区分容器的存活、就绪和启动检查:进程仍在运行,只说明它未必需要被重启,不说明它已经可以接收新请求。
把容器放进负载均衡时,常见的误判是:主进程还在,就认为这个实例可以接流量。编排里至少要把三件事分开。
存活检查
存活(liveness)回答的是“这个进程是否已经无法自行恢复,应该被重启”。检查失败的典型含义是死锁或僵死,而不是“下游暂时不可用”。所以存活检查应当便宜,并且不要依赖外部系统:下游抖动时,如果存活检查也失败,健康实例会被一起重启,故障会被放大。
就绪检查
就绪(readiness)回答的是“现在能不能接收新请求”。配置还没加载完、本地缓存还在预热、关键依赖还没连通,都应该让就绪失败。编排系统会把实例暂时移出负载均衡,而不是杀掉它。依赖恢复后,实例可以重新接流量。
启动检查
启动较慢的进程需要单独的启动(startup)窗口。在这个窗口内不要用过严的存活阈值,否则进程还在正常初始化时就会被误杀。启动成功之后,再切回常规的存活和就绪检查。
一个够用的分法
- 存活:进程能在超时内返回,且没有进入已知的不可恢复状态。
- 就绪:配置已加载,本实例提供服务所必需的依赖检查通过。
- 失败阈值:一次超时不要立刻重启或摘除,给网络抖动留出连续失败次数。
上面是容器编排里的常规区分,不对应某一家云控制台的具体字段名。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)