标准答案
- 先区分进程主动退出、被信号终止、OOM、健康检查失败和宿主机故障,再决定是否自动重启。
- 重启要有退避、次数、启动探针和告警,避免实例在短时间内不断重启并加重依赖压力。
- 应用应在启动阶段验证必需配置和依赖,运行阶段对可恢复错误做超时、限流和降级。
- 恢复验证要看服务是否真正恢复流量、积压是否下降、数据是否完整,而不是只看容器状态为 running。
题目解析
restart policy 只能在进程退出或运行时判定失败后重新创建容器,不能修复错误配置、坏数据、下游过载和持续泄漏。不断重启还会清除现场、重复执行启动副作用,并可能让依赖服务承受更多连接和流量。
自动恢复应建立在退出原因、启动窗口、退避、次数和告警之上。应用启动时快速校验配置,运行时对可恢复错误使用超时、限流和降级;恢复验收要看业务成功率、积压和数据完整性,而不仅是状态变成 running。
常见误区
- 误区:统一设置无限重启。改正:区分可恢复退出与配置/数据错误,设置退避、次数上限和告警。
- 误区:只看容器重启次数。改正:结合退出码、信号、OOM、日志、启动耗时和业务恢复指标判断。