编程与软件开发

GitHub公布9月两次中断事故后的可靠性改进详情

GitHub宣布已降低数据库压力,增加负载控制和故障遏制工具,并在9月发生两起影响其服务的事故后,将更多生产负载迁移至Azure。尽管如此,该公司未能实现将所有生产服务部署到Central US区域的目标,并记录了一起影响Copilot代码审查的中断事故。

2026-10-14
1 分钟阅读
3 浏览量
certi.news Editorial Team
GitHub公布9月两次中断事故后的可靠性改进详情

GitHub在2026年9月可用性报告中披露了两起影响其服务性能的事故,同时基础设施重新分配和数据库承压能力方面也取得了进展。该公司表示,修复工作尚未完成,尽管已经实施了旨在降低高负载或某个共享组件发生故障时故障风险的变更。

截至10月7日,160项生产服务中有120项已部署在Central US区域,51个核心MySQL数据库中有13个已完成迁移。Azure处理了GitHub核心应用65.4%的读取流量、Git读取流量的48.3%以及流处理流量的80.2%。公司强调,这些比例对应不同的负载,不应将其相加。

基础设施迁移取得进展,但落后于计划

由于可用性区域之间的容量不均衡,GitHub于9月11日暂停了Central US区域的部署和流量增加。9月18日,在提供临时容量后,永久性流量增加工作恢复,但长期容量工作仍在继续,目标是在10月底前提供全部可用容量。公司未能实现其雄心勃勃的目标,即在9月30日前将所有生产服务部署到该区域。

在一次计划中的数据库切换过程中,自动化紧急措施导致Central US区域的数据库副本被断开,从而对该区域的客户造成影响。在改进恢复机制之前,GitHub已在计划中的交接操作期间禁用该措施。

降低数据库压力并遏制故障

GitHub将身份验证系统的24张表从其最老的共享数据库中迁出,从属副本每秒因此减少了约100万次查询。此外,支持Issues和Pull Requests的集群删除了修改历史中约9.8亿条不必要的记录,释放了约1.8太字节可恢复存储空间。每周事务冲突次数较6月峰值下降了约77%。

样本中一半的Pull Requests流量已经能够在共享依赖发生故障时,以功能受限的方式继续运行。数据库流量路由还可以在流量高峰期间自动增加容量;在9月23日Pull Requests活动增加期间,其中一个集群的副本数从14个扩展到19个。GitHub还增加了一套负载控制机制,可在服务达到更广泛的饱和状态之前拒绝优先级较低的请求。

9月的两起事故

9月13日,一项后台数据清理工作导致共享数据库负载增加。保护机制监控的是从属副本延迟,却没有监控主服务器上不断累积的负载,而主服务器最终达到可用连接上限。由于缺少较短的查询超时,请求处理程序一直处于等待状态;与此同时,重试循环仍在发送失败的写入操作。事故持续了1小时28分钟,最终在降低内部负载并停止该任务后结束。

9月28日,运行Copilot代码审查的服务发生变更,导致部分客户收到有限版本的审查结果,而不是包含评论的完整版本。因此,任务看起来已经完成,但审查结果并未显示在拉取请求中。事故持续了52分钟,GitHub通过回滚该变更进行了处理,并要求客户重新请求受影响的审查。

实际会发生哪些变化?

这两起事故表明,容量改进本身并不足够;可靠性还取决于及早发现故障、停止无效的重试操作,以及确保任务在其输出确实交付之前不会被宣布成功。GitHub正在增加后台处理控制措施,改进服务启动行为,并加强Copilot代码审查结果的监控和交付。

GitHub还记录了GitHub Actions基础设施方面的改进:Redis操作量下降了约28%,相对处理器使用率下降了约30%。独立的缓存层使Redis使用的带宽下降了84%,平均响应时间下降了66%,核心库存请求的中位响应时间下降了96%,等待中的请求下降了95%。仍待解决的问题在于,公司能否完成容量工作,并防止共享依赖在实际生产环境条件下再次发生故障。

新闻来源
c
作者

certi.news Editorial Team

你需要知道的

GitHub 宣布,在 2026 年 9 月发生两起事故后进行了可靠性改进,包括降低数据库压力、实施负载控制和故障遏制,并将更多负载迁移至 Azure。不过,该公司尚未完成在 Central US 区域部署所有生产服务,仍在努力防止共享依赖项和 Copilot 代码评审故障再次发生。

  • GitHub 服务在 9 月 13 日和 28 日受到两起事故影响;第一起由共享数据库负载增加引起,第二起导致 Copilot 代码评审显示有限结果。
  • GitHub 将身份验证系统中的 24 张表迁离最老的共享数据库,消除了约每秒 100 万次查询,并使每周事务冲突较 6 月峰值下降约 77%。
  • 该公司增加了数据库流量自动路由和负载控制机制,可在服务达到饱和前拒绝优先级较低的请求。
  • 截至 10 月 7 日,根据重新分配计划,160 项生产服务中有 120 项、51 个核心 MySQL 数据库中有 13 个已在 Central US 部署或迁移。
  • Azure 为 GitHub 负载承担了不同比例的读取流量和处理任务;这些比例对应不同负载,不应相加。
  • GitHub Actions 的架构有所改善,Redis 操作量下降约 28%,相对 CPU 使用率下降约 30%。

常见问题

9 月的第一起事故是什么原因造成的?

9 月 13 日,一项后台数据清理工作导致共享数据库负载增加,而保护机制当时没有监控主服务器上累积的负载。

Copilot 代码评审事故发生了什么?

9 月 28 日的一项服务变更导致部分客户收到有限版本的评审结果,而没有完整评论,因此任务看似已完成,但代码拉取请求中没有显示评审内容。

GitHub 是否已完成在 Central US 部署所有生产服务?

没有。截至 10 月 7 日,160 项生产服务中有 120 项已部署在那里;GitHub 未能在 9 月 30 日前实现部署所有服务的目标。

GitHub 采取了哪些措施来提高可靠性?

GitHub 降低了数据库压力,停用了计划交付期间用于分离副本的自动操作,增加了负载控制,并改进了后台处理以及 Copilot 评审结果的监控和交付。

同一分类

你可能还喜欢

查看所有新闻