这是一张“按根因找同类事故”的索引,不是 12 篇复盘的摘要合集。每条只保留事故、年份、直接根因、一句话教训和可对照的 Runbook;时间线、影响面、恢复过程和报告边界请回到原复盘。分组按“直接根因”归入一组,但很多事故是多因叠加,组内提示和第二假设同样重要。
事实以各事故的官方报告为准。本页不补写报告没有给出的数字,也不把传播中的简化标签当作根因。
症状线索:解析失败、跨地域绕行、单点拥塞、路由宣告异常、流量被吸到某个位置。先区分“DNS 软件故障”“BGP 宣告问题”和“骨干链路中断”,三者排查方向不同。
| 事故 | 年份 | 直接根因 | 一句话教训 | 对应 Runbook |
|---|---|---|---|---|
| Cloudflare 2020 | 2020 | 骨干路由策略改错匹配条件,全部 BGP 路由以更高 local-preference 泄漏,流量被吸往亚特兰大 | 一行配置也要做语义 diff;最大前缀限制等熔断器要提前部署 | — |
| Facebook 2021 | 2021 | 例行维护命令误删全部骨干连接,站点健康判断撤回 DNS 的 BGP 宣告 | 危险命令要有独立熔断;带外通道和 DNS 不能依赖同一条骨干 | — |
组内提示:Facebook 2021 的触发点其实是维护命令,把它放在本组,是因为真正让全球不可访问的是 BGP 撤回与 DNS 不可达。按症状进组后,仍要回到原复盘看变更环节。
症状线索:故障紧跟发布、配置、补丁、扩容或运维命令出现;回滚后好转;或者“变更本身没错,但范围超出了预期”。
| 事故 | 年份 | 直接根因 | 一句话教训 | 对应 Runbook |
|---|---|---|---|---|
| AWS S3 2017 | 2017 | 容量移除命令输入错误,误删承载 index 与 placement 子系统的服务器 | 批量运维工具必须自己限制爆炸半径,不能只靠操作者输对 | — |
| Datadog 2023 | 2023 | 自动 systemd 安全更新重启 networkd,删除 Cilium 路由;五个区域共用同一维护窗口 | 补丁窗口也是全局耦合;要测原地重启,并按故障域灰度 | K8s/节点升级 |
组内提示:Datadog 2023 的变更不是人工发布,而是自动补丁通道;不要因为“没有发布”就排除变更类根因。
症状线索:数据目录被删、主从复制中断、写入延迟异常、快照或备份不可用、恢复点比预期旧。
| 事故 | 年份 | 直接根因 | 一句话教训 | 对应 Runbook |
|---|---|---|---|---|
| GitLab 2017 | 2017 | 本意清空从库目录,实际清空主库 PostgreSQL 数据目录,约 300 GB | 备份只有恢复演练过才算备份;主机身份和 PITR 要能兜底 | PostgreSQL PITR |
| Roblox 2021 | 2021 | Consul streaming 竞争叠加 BoltDB freelist 膨胀,控制面写入恶化 | 存储引擎病态会伪装成网络问题;控制面要分片、遥测要解耦 | 控制面快照恢复(类比) |
组内提示:Roblox 2021 同时是控制面事故;把它放在存储组,是因为两个低层缺陷都落在 Consul 的写入与存储引擎上。排查时不要把“网络慢”当成唯一方向。
症状线索:CPU、内存、线程、连接数或配额触顶;扩容后反而更差;延迟升高但进程没有崩溃;错误集中在高负载时段。
| 事故 | 年份 | 直接根因 | 一句话教训 | 对应 Runbook |
|---|---|---|---|---|
| Cloudflare 2019 | 2019 | WAF 正则灾难性回溯,打满全球边缘 CPU,返回 502 | 正则要有线性时间引擎和性能门禁;配置变更要灰度并可全局停用 | — |
| Slack 2021 | 2021 | AWS TGW 未跟上每包速率突增;自动缩容和扩容供给链又放大故障 | 托管服务的透明扩容有上限;事故中先关闭缩容,监控要独立 | — |
| AWS Kinesis 2020 | 2020 | 小规模扩容使每前端线程数越过 OS 上限,分片映射构建失败 | 扩容模型要算每节点随集群规模增长的开销;静默降级要有独立指标 | — |
组内提示:Cloudflare 2019 的触发点是配置部署;如果只按“变更”找,会漏掉“性能门禁”和“kill switch”这两个真正的教训。
症状线索:异常登录、会话复用、令牌或密钥疑似泄露、CI 变量被读取、审计日志出现陌生下载或授权。
| 事故 | 年份 | 直接根因 | 一句话教训 | 对应 Runbook |
|---|---|---|---|---|
| CircleCI 2023 | 2023 | 工程师笔记本恶意软件窃取受 2FA 保护的 SSO 会话,攻击者取走客户密钥 | 会话窃取可绕过 2FA;CI 长期密钥应换 OIDC 短期凭据并演练轮换 | 证书轮换(凭据轮换可借鉴) |
症状线索:服务发现、调度、密钥管理、数据库选主或云网络控制面异常;数据面还在跑,但路由、配置或选主已经失控。
| 事故 | 年份 | 直接根因 | 一句话教训 | 对应 Runbook |
|---|---|---|---|---|
| GitHub 2018 | 2018 | 43 秒网络分区使 Orchestrator 跨区域选主,应用跨区写入后产生分叉 | 自动切换必须理解应用延迟边界;数据优先于快速恢复 | 数据库切换 |
| Google Cloud 2019 | 2019 | 维护自动化跨物理位置取消调度网络控制平面,BGP 撤回后区域容量骤降 | 维护自动化要以故障域为硬边界;控制面配置要能本地重建 | 控制面快照恢复(类比) |
组内提示:Google Cloud 2019 同时有“维护变更”和“BGP 撤回”两层;归入本组是因为控制平面被整体取消调度,数据面才失去维持能力。
按你手上的恢复动作选 Runbook,不要按事故公司名选。下列 12 篇覆盖本站现有的主要恢复场景:
合上页面,先回答,再展开对照。
小程序版
微信扫码,随时查命令