跳到主内容
快讯直播
AI智模界
AI 词典

优雅停机:发版那几秒别把请求弄丢

一句话定义

优雅停机(Graceful Shutdown)是指服务在收到停止指令后,不再接受新请求,把已经在处理的请求做完(或安全地交还),再释放资源退出。粗暴停机是拔电源,优雅停机是正常打烊。

打烊的比方

餐厅打烊有三种做法。最粗暴的是直接拉闸,客人饭没吃完灯全灭;稍好一点是把门一锁,但厨房里的菜不管了;优雅停机是:门口先挂“今日已满”,不再放新客进来;厨房把已点的菜做完端上;服务员结完账;最后关灯锁门。关键顺序是——先停止接新活,再做完旧活,最后才退出。

那几秒到底在做什么

1. 收到停止信号:常见的是 SIGTERM,编排系统或运维脚本通知进程“准备下班”。

2. 主动摘流量:把健康检查/就绪探针(Readiness Probe)置为失败,让负载均衡不再往这个实例转发。这里常要等一小会儿,因为转发规则有传播延迟。

3. 关闭监听端口:不再接受新连接。

4. 处理在途请求(in-flight requests):给一个宽限期(grace period),把已经进来的请求跑完。

5. 通知长连接:WebSocket、gRPC streaming、SSE 这类连接要主动发关闭消息,让客户端重连,而不是直接断。

6. 后台任务收尾:消息消费者停止拉新消息,手里的消息处理完再确认(ack);没做完的退回队列,别丢。

7. 清理资源:刷缓冲、提交偏移量、关连接池、上报指标。

8. 超时才强杀:宽限期到了还没结束,才发 SIGKILL。

宽限期不是越长越好。太长会让发版变慢、旧版本占着容量;太短则长请求必丢。它应该匹配你“最慢那批请求”的耗时。不同编排平台对信号和超时字段的定义不完全一样,具体以官方文档为准。

和相邻概念的区别

概念关注点典型动作
优雅停机单个实例如何退出摘流量、做完在途、再退出
强制停机立即释放资源直接杀进程,在途请求中断
优雅重启不中断服务换新重载配置、新工作进程接管
滚动更新集群整体替换逐批“优雅停机 + 启动”

优雅停机是单实例的行为,滚动更新(Rolling Update)是编排层的策略,后者依赖前者才能不丢请求。客户端的重试和幂等是兜底,不能替代优雅停机。

对从业者的实际意义

对普通职场人,最直观的感受是:发版时页面不再突然 502,流式输出的回答不会断在半句话。对 AI 从业者更明显:一次推理可能跑几秒到几十秒,流式生成中途被掐,用户要重来,算力也白烧。做消息队列、训练任务调度、模型服务时,停机能等多久、任务能否续跑,直接决定发版体验和成本。

记住核心:先摘流量,再做完事,最后退出。宽限期只是上限,不是目标。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。