GitHub 2026 年 4 月可用性报告:10 起事故,包括一次巨型爬虫攻击
GitHub 2026 年 4 月可用性报告:10 起事故,包括一次巨型爬虫攻击
5 月 14 日,GitHub 发布了 2026 年 4 月可用性报告。这是一个艰难的月份:10 起事故,波及代码搜索、Copilot、Pages、Codespaces、Actions 等多项服务。以下是事故详情和 GitHub 的应对措施。
事故一览
| 日期 | 服务 | 持续时间 | 影响 |
|---|---|---|---|
| 4月1日 | 代码搜索 | 8h 43m | 100% 查询失败,需完整重建索引 |
| 4月1日 | 审计日志 | 4m | 4,297 个 API 用户受影响 |
| 4月9日 | Copilot Agent | 4h 16m | ~84% 新会话延迟,队列最长 54 分钟 |
| 4月13日 | Pages | 39m | ~1,750 万次 HTTP 500 错误(峰值 12.8%) |
| 4月16日 | Codespaces | 3h 22m | ~40% 的 VS Code 启动失败 |
| 4月20日 | 代码扫描 / 项目看板 | 15h 36m | 新 PR 不触发扫描;新 issue 不显示在看板 |
| 4月22日 | Copilot Chat | 3h 43m | 完全不可用,后按区域逐步恢复 |
| 4月23日 | 多服务链式故障 | 1h 18m | Copilot、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 引起——限速状态在限速窗口结束后仍然持续。
修复:改为按实例认证凭据、禁用有问题的缓存机制、加强监控。
值得注意的重复主题
-
共享基础设施的链式故障——4月23日的 DNS 事故是典型例子:一个降级的组件 → 多个服务受影响。
-
限速范围问题——Copilot(4月9日)和爬虫攻击(4月27日)都涉及限速过于全局化或容易被绕过。
-
自动化工具误伤——4月1日代码搜索中断由过于激进的自动化基础设施变更触发。4月13日 Pages 中断由自动化 DNS 工具误删必要记录导致。
-
检测延迟——多起事故有 40-53 分钟的检测延迟,因为监控没有将故障模式识别为风险。
GitHub 的改进措施
- 更强的 DNS 弹性和多数据中心故障转移
- 更渐进的部署和更好的健康检查
- 更快的检测和告警
- 更好的流量隔离防止链式影响
- 限速加固——按实例隔离 + 匿名流量控制
- 上游依赖的回退机制