AI 学习笔记(十八):LLM 故障演练(Game Day)最小实践
上一篇我们把 Incident Response 的最小闭环搭起来了。
但线上体系能不能真的扛住故障,不是看文档写得多完整,而是看你有没有做过故障演练(Game Day)。
这篇继续生产运维实践第四部分:
把“事故响应方案”提前在可控环境里反复演习,验证它在真实压力下是否可执行。
先说结论:
- 没演练过的 runbook,等于没验证过
- 没做过场景注入,就不知道你的监控是否真的能报警
- 没做回滚验收,就不知道“恢复”是不是只是表面恢复
这篇仍然只讲最小可落地版本,目标只有三个:
- 用一套固定脚本复现高风险故障场景
- 在演练中验证止血与回滚动作是否生效
- 把演练结果沉淀成可追踪的改进清单
1. Game Day 的目标不是“演戏”,而是验证系统能力
很多团队把故障演练做成了“流程走读会”:大家口头说一遍,最后结论是“理论上没问题”。
这对 LLM 系统几乎不够,因为真正风险点往往在动态行为里:
- provider 波动下路由是否及时切换
- prompt 发布后质量退化是否能被监控捕获
- 检索层异常时是否会触发只读/人工兜底
- 工具调用异常时是否能阻断副作用
所以 Game Day 要明确一个核心目标:
- 验证生产能力,不验证个人反应速度
换句话说,演练要测的是机制,不是“谁更会救火”。
2. 先选 3~4 个高价值场景,不要一上来铺太大
最小实践建议先固定 4 类场景,每次挑其中 2 类演练:
Provider Degradation
主 provider 延迟升高或错误率飙升,验证 fallback 与熔断Prompt Regression
新 prompt 版本导致结构化输出失败率升高,验证发布回滚Retrieval Corruption
检索命中率下降或返回脏证据,验证降级到缓存/只读Tool Side Effect Risk
自动化写操作异常,验证开关切只读与人工审批接管
场景选择原则只有两条:
- 对真实用户影响大
- 你当前确实有对应工程开关可操作
没有开关就先补开关,再演练。不要靠“临场改代码”救场。
3. 先把演练契约写成一个场景清单文件
建议把每个场景都收敛成统一结构,方便复用和审计:
1 | # game-day-scenarios.yaml |
这样做的好处是:
- 场景可重复执行
- 验收标准可量化
- 每次演练结果可以横向对比
4. 演练前 30 分钟只做准备,不做“临时优化”
建议固定一个 T-30 检查清单:
冻结变更:暂停非必要发布,避免噪音干扰确认版本:记录当前 provider 路由、prompt 版本、检索配置检查开关:fallback、只读模式、写操作禁用开关可用确认观测:关键仪表盘与告警规则在线明确角色:指挥官、注入人、记录人、执行人
一个常见误区是“演练前先偷偷修几个点”。
如果演练前改了核心策略,但没有基线记录,演练结果很难解释。
5. 注入故障时,优先用配置和开关,不要直接破坏数据
最小策略:
- 在
staging或隔离租户做注入 - 通过
feature flag / mock layer / traffic shadow注入 - 禁止直接改生产持久化数据做演练
例如可以有一个简单的注入器:
1 | interface FaultInjectionConfig { |
代码不是重点,重点是:
- 注入机制可开可关
- 注入范围可控
- 注入动作有日志可追踪
6. 演练中的核心时间线:发现、止血、回滚、验收
我更推荐现场只盯 4 个时间点:
T_detect:从注入开始到告警触发T_mitigate:从告警触发到止血动作生效T_rollback:从止血到版本/配置回滚完成T_verify:从回滚完成到关键指标恢复稳定
如果你记录了这四个时间点,就能得到两个关键指标:
MTTD(Mean Time To Detect)MTTR(Mean Time To Recover)
这两个指标比“演练参与人数”更能说明体系成熟度。
7. 回滚验收要有硬门槛,不能只看“服务恢复了”
很多演练失败都发生在这一步:接口能返回了,但质量和副作用还没回到安全区。
建议回滚验收至少包含 5 条:
- 错误率回到阈值以下(例如
< 5%) - P95 延迟回到阈值以下
- 结构化输出成功率回到基线区间
- 工具写操作保持受控(必要时仍为只读)
- 关键用户路径做过最小冒烟验证
只要其中一条没过,就不应该宣布“恢复完成”。
8. 每次演练后必须产出 Scorecard,不要只写感受
最小 Scorecard 可以很简单:
1 | Game Day: GD-001 provider-timeout-spike |
输出必须包含三类信息:
- 是否通过(Pass/Partial/Fail)
- 关键指标是否达标
- 明确到 owner 的改进动作
如果没有 owner 和截止时间,演练结论通常会在一周内失效。
9. 一周内可落地的 Game Day 最小推进节奏
如果你要把这篇直接变成行动清单,可以按下面节奏推进:
Day 1:选 4 个高风险场景,定义场景契约与验收阈值Day 2:补齐 fallback、只读、回滚等必要开关Day 3:接入注入器与关键观测指标Day 4:执行一次小范围演练并记录时间线Day 5:完成复盘与改进项分配,更新 runbook
做到这里,你的 incident 体系就从“有文档”升级为“可验证”。
总结
LLM Game Day 的核心价值,不是模拟一个漂亮流程,而是提前暴露系统的真实薄弱点。
最小可落地版本只需要抓住四件事:
- 用场景契约固定故障注入
- 用时间线指标衡量发现与恢复效率
- 用回滚验收阈值保证不是假恢复
- 用 Scorecard 和 owner 追踪改进闭环
如果你现在只能先做一件事,我最推荐的是:
先把“回滚验收阈值”写清楚并纳入每次演练,不要只凭“看起来恢复了”做判断。
参考资料
- Google SRE Workbook - Creating a Test Plan
- Google Cloud Architecture Framework - Test reliability
- AWS Well-Architected - Reliability Pillar
- OpenAI Docs - Production best practices
本文永久链接: https://www.mulianju.com/learning-notes/ai-learning-notes-llm-game-day-fault-drill-minimal-practice/