第四章 实战案例:压测、灰度与生产化 导读:原理讲完,回到真实世界。一个推理服务「能跑」离「敢接生产流量」还差三件事:你不知道它扛不扛得住(压测)、你不敢一次性全量(灰度)、你不知道它什么时候快挂了(可观测与调优)。这一章用两个完整案例把这三件事串起来:4.1 用压测找到你的真实吞吐上限;4.2 把服务做成可灰度、可监控、可回滚的生产形态。读完你应能交付一份「上线 checklist」。 4.1 压测:找到你的真实吞吐与延迟上限 不上压测就全量,等于蒙眼开车。压测目标不是「跑个分数」,而是回答三个业务问题:单副本能扛多少并发?P99 延迟到多少?显存什么时候爆? 工具上,可复用 vLLM 自带的基准脚本,或简单的并发 / Python 客户端循环。
导读:原理讲完,回到真实世界。一个推理服务「能跑」离「敢接生产流量」还差三件事:你不知道它扛不扛得住(压测)、你不敢一次性全量(灰度)、你不知道它什么时候快挂了(可观测与调优)。这一章用两个完整案例把这三件事串起来:4.1 用压测找到你的真实吞吐上限;4.2 把服务做成可灰度、可监控、可回滚的生产形态。读完你应能交付一份「上线 checklist」。
不上压测就全量,等于蒙眼开车。压测目标不是「跑个分数」,而是回答三个业务问题:单副本能扛多少并发?P99 延迟到多少?显存什么时候爆?
工具上,可复用 vLLM 自带的基准脚本,或简单的并发 curl / Python 客户端循环。关键不是工具,是 压测姿势:
nvidia-smi -l 1 或 DCGM Exporter,确认峰值显存是否触顶。很多 OOM 不在「起服务」时发生,而在「高并发 + 长上下文」叠加时发生。拿到数据后做一张表:并发数 / 吞吐 / P50 延迟 / P99 延迟 / 峰值显存。这张表就是后面定副本数、设 HPA 阈值的依据——一切容量规划都该来自这张表,而不是拍脑袋。例如若单副本在 16 并发时 P99 已到 2s 且显存 95%,那你至少要多副本才能接 50 并发的业务。
压测过了,下一步是「敢上线」。核心三件套:
灰度(金丝雀):别一次性把 100% 流量切到新版本。用 Ingress 或网关把 5%–10% 流量导到新副本,观察错误率、延迟、显存是否异常,再逐步放大到 50%、100%。出问题立刻把权重调回旧版本。K8s 里可以靠两个 Deployment(v1 / v2)+ Service 权重或网关路由实现。
监控:至少盯四类指标——(1)业务指标:QPS、成功率、P99 延迟;(2)GPU 指标:利用率、显存占用、温度(DCGM Exporter + Prometheus);(3)队列指标:vLLM 内部等待队列长度,它是「该扩容了」的最早信号;(4)资源事件:Pod 重启、OOMKilled。没有监控的上线等于盲飞。
回滚:K8s 的 kubectl rollout undo 能在秒级回退 Deployment。前提是 新版本出问题能被监控捕获、且旧版本镜像仍在仓库。务必演练一次回滚,确认链路通畅——很多人第一次回滚才发现旧镜像被清了,欲哭无泪。
把这三件做实,你的 GLM-5.2 服务就不再是「实验室玩具」,而是能写进上线报告的「生产系统」。容量、灰度、监控三者闭环,才是本章要交付的终局能力。