needhelp
← 返回博客

GitHub 2026 年 4 月可用性报告:10 起事故,包括一次巨型爬虫攻击

作者 xingwangzhe
GitHub
可用性
事故报告
SRE
宕机

GitHub 2026 年 4 月可用性报告:10 起事故,包括一次巨型爬虫攻击

5 月 14 日,GitHub 发布了 2026 年 4 月可用性报告。这是一个艰难的月份:10 起事故,波及代码搜索、Copilot、Pages、Codespaces、Actions 等多项服务。以下是事故详情和 GitHub 的应对措施。


事故一览

日期服务持续时间影响
4月1日代码搜索8h 43m100% 查询失败,需完整重建索引
4月1日审计日志4m4,297 个 API 用户受影响
4月9日Copilot Agent4h 16m~84% 新会话延迟,队列最长 54 分钟
4月13日Pages39m~1,750 万次 HTTP 500 错误(峰值 12.8%)
4月16日Codespaces3h 22m~40% 的 VS Code 启动失败
4月20日代码扫描 / 项目看板15h 36m新 PR 不触发扫描;新 issue 不显示在看板
4月22日Copilot Chat3h 43m完全不可用,后按区域逐步恢复
4月23日多服务链式故障1h 18mCopilot、Webhooks、Git、Actions 等均受影响
4月27日搜索(爬虫攻击)6h 15m最高 65% 搜索超时,波及 Issues、PRs 等
4月27日+搜索后续同上事故

重大事故

4月27日:爬虫攻击打垮搜索

4月 27 日 16:15-22:46 UTC,GitHub 搜索服务出现严重降级。原因是大规模匿名分布式爬虫攻击

攻击者使用了 60 万+ 独立 IP 地址,每个请求都包含匹配的用户身份信息——这让标准限速策略完全失效(每个 IP 都在阈值以下)。该流量占当天搜索总流量的 30%,集中在 4 小时内。负载均衡层饱和,导致 Issues、Pull Requests、Projects、Repositories、Actions、Package Registry 和 Dependabot Alerts 等服务中高达 65% 的搜索超时

GitHub 的应对:扩展负载均衡层、拦截流量、优化连接处理、实施新的匿名流量限制控制以保护注册用户。

4月23日:DNS 降级引发链式故障

单一数据中心的 DNS 基础设施降级,引发跨多服务的链式事故,影响约 5-7% 的总流量。一个近期引入的流量均衡机制在特定负载模式下导致 DNS 解析器开始失败。Copilot(~7% 模型请求失败)、Webhooks(延迟 >3 秒)、Git 操作(1.25% 错误)、Actions(工作流状态延迟 ~8 秒)和 Deployments(临时阻塞)均受影响。

修复:重启 DNS 基础设施。教训:需要更好的 DNS 弹性、更安全的部署流程、以及自愈机制。

4月9日:限速 Bug 瘫痪 Copilot Agent

Copilot 的限速逻辑有 Bug——它将全局限速应用于所有用户而不是按实例隔离。恰好一次客户端更新使 API 流量激增 3-4 倍,加速了限速资源耗尽。84% 的新 Agent 会话被延迟,队列等待时间达到 54 分钟(正常为 15-40 秒)。同一日的第二次冲击由缓存 Bug 引起——限速状态在限速窗口结束后仍然持续。

修复:改为按实例认证凭据、禁用有问题的缓存机制、加强监控。


值得注意的重复主题

  1. 共享基础设施的链式故障——4月23日的 DNS 事故是典型例子:一个降级的组件 → 多个服务受影响。

  2. 限速范围问题——Copilot(4月9日)和爬虫攻击(4月27日)都涉及限速过于全局化或容易被绕过。

  3. 自动化工具误伤——4月1日代码搜索中断由过于激进的自动化基础设施变更触发。4月13日 Pages 中断由自动化 DNS 工具误删必要记录导致。

  4. 检测延迟——多起事故有 40-53 分钟的检测延迟,因为监控没有将故障模式识别为风险。


GitHub 的改进措施

  • 更强的 DNS 弹性和多数据中心故障转移
  • 更渐进的部署和更好的健康检查
  • 更快的检测和告警
  • 更好的流量隔离防止链式影响
  • 限速加固——按实例隔离 + 匿名流量控制
  • 上游依赖的回退机制

参考

分享本页