代码托管平台 GitHub 于 8 月 21 日公布了 8 月 17 日平台大规模宕机事件的调查结果。官方确认,此次事故并非由程序代码或配置变更引起,核心原因是“基础设施容量未能跟上平台使用量的快速增长”。

本次宕机共造成该平台网站、身份验证、Actions 自动化服务、API、Pull Request、Issues 等多项服务中断长达 7 小时 47 分钟

打开网易新闻 查看精彩图片

流量创历史新高,中部数据中心成瓶颈

官方表示,当日平台流量创下历史新高,导致美国中部数据中心的一项关键基础设施组件容量不足,压力随即扩散至其他系统,引发身份验证失败及多项服务异常。在恢复过程中,部分服务因错误触发客户端重试机制,进一步推高系统流量,技术人员因此花费了较长时间才完全恢复服务。

这已是该平台本月发生的第二起重大服务事故。此前,其 Actions 自动化服务已于 8 月 6 日出现故障。官方指出,两起事故的核心问题均为基础设施容量不足,而非代码或配置变更导致。

使用量激增:月提交次数翻倍

平台使用量近期增长迅猛。今年 4 月至今,每月提交(commit)次数已从 14 亿次增加至 29 亿次,合并 Pull Request 及新建代码仓库的数量也持续攀升。

为应对增长,官方今年已增加超过 300 万个 CPU 核心120PB 高速存储空间及网络容量,并加速将工作负载迁移至微软 Azure。目前约 58% 的平台负载已由 Azure 承载,远高于今年 5 月的 12%;约一半的 Git 操作也已由 Azure 处理。即便如此,平台仍被激增的用户量“挤垮”。

后续优化:隔离关键系统,统一重试上限

官方称,接下来将进一步隔离平台关键系统,减少不同服务间的共同依赖,同时统一设置服务间的重试次数上限和超时机制,避免系统异常时大量客户端或服务自动重复请求,进一步加重负载并形成连锁故障。