后室中文数据库状态页 - 多项 GitHub 服务出现故障 – 故障详情

多项 GitHub 服务出现故障

已解决
严重故障
开始于 大约 1 个月前持续 1 小时 28 分钟

受到影响

GitHub

运行正常 从 9:16 AM 至 9:25 AM, 性能下降 从 9:25 AM 至 10:44 AM

更新
  • 已解决
    UTC
    已解决

    2026年9月13日,协调世界时(UTC)08:43至10:44期间,GitHub 大约28项服务的可用性下降,受影响服务包括 Issues、Pull Requests、Actions、Codespaces、Pages、Notifications、Code Scanning、Git LFS 以及新账户注册功能。在高峰期,8.8%的 GitHub App 安装访问令牌创建请求失败。Actions 工作流的令牌签发也受到影响,在故障期间大约有4%的工作流受到波及。通过网页界面创建 Issue 的尝试中约有96%失败,注册失败率则超过90%。

    故障原因是一个内部数据清理任务,该任务于07:33 UTC开始向一个共享数据库集群写入数据。该集群存储着几乎每个已认证请求都会读取的权限数据。用于控制该后台任务节奏的保护机制只监测了一个健康信号——数据库副本的延迟程度,而该信号在整个过程中一直保持较低水平。它没有考虑到主库本身正在累积的负载,因此该任务持续写入数据,而主库则在悄然逼近其极限。

    当主库耗尽可用连接后,需要访问它的请求便无法完成。首先,这些数据库调用没有设置快速超时机制,导致请求处理程序在停滞的数据库上持续等待,而不是快速失败,这使得共享的请求处理能力退化为全站范围的错误。其次,令牌创建过程中的一个重试循环不断重新发送本已失败的写入请求,这使数据库持续处于饱和状态,无法得到恢复。

    监控系统于08:50 UTC确认了此次故障,但由于影响范围广泛,加之令牌创建带来的放大效应,定位负载来源花费了一定时间。第一响应人员通过卸载内部负载并暂停该任务进行了缓解,所有服务已于10:44 UTC恢复正常。

    为防止此类问题再次发生,我们默认对针对共享的、面向客户的数据库的后台任务进行限流,并新增基于主服务器负载(而不仅仅是复制延迟)的自动暂停和寻呼机制。我们还将在数据库健康信号旁直接展示正在运行的后台任务,以便响应人员无需离开这些仪表盘即可查看并暂停任务;同时对令牌签发路径中的重试次数设置上限,并新增请求级别的超时机制,以防止某一个不健康的数据库耗尽共享网页服务器的处理能力。此外,我们正在拆分这个数据库集群,以消除单点故障。在接下来的两周内,我们将把包括授权数据在内的各项特定服务数据迁出这个共享集群。

  • 更新
    UTC
    更新

    拉取请求(Pull Requests)出现性能下降。我们正在继续调查。

  • 更新
    UTC
    更新
    我们已通过内部负载削减降低了该集群的负载,并观察到恢复迹象,但仍在持续监控中
  • 更新
    UTC
    更新

    我们发现 collab 上的数据库复制延迟增加,导致授权端点的错误率上升,并进一步引发系统整体错误率上升——我们正在调查中

  • 更新
    UTC
    更新

    Actions 正在经历性能下降。我们将持续调查此问题。

  • 调查中
    UTC
    调查中

    我们正在调查有关 API 请求、议题、页面和拉取请求可用性下降的报告