cat case/PM-GITHUB-20260817.md

GitHub 全球中断:Istio sidecar 容量上限触发认证网关雪崩

P0 ·

摘要

2026年8月17日 13:28–21:15 UTC(约 7 小时 47 分),GitHub 发生全球性严重中断,网站、Pull Request、Issues、Actions、Webhooks、API、Git Operations、Pages、Copilot 及企业身份层(SAML/OIDC/SCIM/Team Sync)同时受损,峰值约 20% API 错误率、归档/raw 下载约 50% 失败,约 2.25 亿开发者受影响。官方 RCA(github.blog,CTO Vlad Fedorov 署名,incident zkxwbgr0cnmx)确认:核心为容量故障,非代码或配置变更。

时间线

2026-08-17 13:28 UTC流量创历史新高,Central US 数据中心 Istio sidecar pod 触及并发上限,故障开始(官方记 13:28–21:15,共 7h47m)
2026-08-17 13:45 UTC峰值约 20% API 错误率
2026-08-17 14:04 UTC归档/raw 下载约 50% 失败;企业身份层 SAML/OIDC/SCIM/Team Sync 受影响
2026-08-17 14:31 UTCCopilot 降级
2026-08-17 16:36 UTC定位到 problematic component 并实施 corrective action
2026-08-17 16:59 UTC大部分缓解,但 Git Ops/Issues/API 反复回落
2026-08-17 21:15 UTC完全恢复

根因

流量创历史新高,Central US 数据中心的 Istio sidecar pod 达到并发上限;而自动扩容(autoscaling)策略仅监控主服务、未监控 sidecar,导致扩容未被触发。4 个 HAProxy 节点随之耗尽流控上限,网关认证路径出现延迟与失败。恢复期间,VS Code 潜在的重试 bug 触发 Copilot Token Service 重试风暴,请求量从 7k–9k rps 飙升至 70k–100k rps,进一步拖慢恢复。官方明确:本次非代码/配置变更导致,核心是容量故障。

放大因素

  • 自动扩容策略只监控主服务、漏盯 sidecar,容量保护机制形同虚设
  • 4 个 HAProxy 节点流控上限被耗尽,认证网关成为瓶颈
  • 恢复期的客户端(VS Code)重试 bug 形成重试风暴,将 7k–9k 放大到 70k–100k rps
  • 企业身份层(SAML/OIDC/SCIM/Team Sync)与核心网关耦合,单点故障连带认证全链路

缓解措施

  • 定位 problematic component 后实施 corrective action,逐步恢复
  • 事后 GitHub 承诺改进 sidecar 容量监控与扩容策略、加固 HAProxy 流控、修复客户端重试行为

经验教训

  • sidecar/代理层必须纳入自动扩容与容量监控,不能只盯主服务
  • 网关与认证路径需独立限流与冗余,避免单点拖垮全站
  • 客户端 SDK 重试应带退避/熔断,防止恢复期重试风暴
  • 参考来源:GitHub 官方 RCA https://github.blog/news-insights/company-news/the-august-17-outage-and-the-work-ahead ;状态页 https://www.githubstatus.com/incidents/zkxwbgr0cnmx

检查清单

  • sidecar/代理层是否纳入扩容与容量监控?
  • 网关认证路径是否独立限流、多可用区?
  • 客户端重试是否带退避/熔断?
  • 是否对"流量创新高 + sidecar 触顶"做过故障注入演练?