GitHub 在 8 月 19 日公布了 8 月 17 日那次中断的复盘。故障从 UTC 13 时 28 分持续到 21 时 15 分,7 小时 47 分,Issues、Pull Requests、API、Actions 和 Copilot 全线报错率升高。网页流量错误率约 20%,归档和内容下载约 50%,DownDetector 上的报告峰值接近 3000。这是 GitHub 状态页 15 天内的第七起事件。
根因是流量上涨打满了美国中部机房的负载均衡器网络。触发点在 Istio sidecar 触及并发上限,而自动扩容策略监控的是宿主服务,没盯 sidecar 的并发上限,本该自动补上的容量就没补,故障顺着链路扩散,最后连登录系统也垮了。
Copilot 恢复得最慢,原因在客户端。Visual Studio Code 的一个缺陷把十倍于正常量的流量打向 Copilot 的登录服务,其他服务恢复之后 Copilot 还挂在事件列表里好几个小时。
这次复盘有两条可以直接拿走。自动扩容盯的指标要是错开了真正的瓶颈,这套策略等于没有。客户端的重试逻辑会在服务端恢复期把故障重新点着,所以退避策略也算服务端可用性的一部分。