三起近期事故的复盘报告
在 2024 年 12 月,我们经历了一系列影响 Claude API 服务质量的技术问题。作为一家致力于透明度和持续改进的公司,我们认为有必要与社区分享这次事故的详细复盘。
本文将深入分析三个相互关联的技术问题,它们如何相互作用导致服务降级,以及我们从中学到的教训。
Claude 大规模服务架构
在深入事故细节之前,先简要介绍一下我们如何大规模服务 Claude。
Claude 运行在由数千个 TPU(张量处理单元)组成的集群上。当用户发送请求时:
- 负载均衡器将请求路由到可用的服务器
- 调度器根据模型版本、上下文窗口大小等因素选择合适的 TPU
- 推理引擎在 TPU 上执行模型推理
- 采样器根据概率分布选择下一个 token
整个流程需要精确协调,任何环节的问题都可能影响输出质量。
图 1:Claude API 事件时间线。黄色:检测到问题,红色:降级加剧,绿色:修复部署
事件时间线
2024 年 12 月 16 日
- 10:00 AM - 用户开始报告输出质量下降
- 10:30 AM - 工程团队确认问题,开始调查
- 11:15 AM - 识别出第一个问题:上下文窗口路由错误
2024 年 12 月 17 日
- 02:00 AM - 部署临时修复
- 08:00 AM - 发现输出仍有异常,识别出第二个问题:输出损坏
- 03:00 PM - 部署第二个修复
2024 年 12 月 18 日
- 全天 - 持续监控和分析
- 发现问题根源:XLA 编译器 bug
2024 年 12 月 19 日
- 部署完整修复,问题彻底解决
三个相互重叠的问题
这次事故实际上是三个独立但相互影响的技术问题的组合:
1. 上下文窗口路由错误
问题描述:调度器错误地将长上下文请求路由到只支持短上下文的 TPU 实例。
影响:约 5 % 的长上下文请求(>100K tokens)被截断或失败。
根本原因:
- 我们最近扩展了 TPU 集群
- 新增的 TPU 配置信息没有正确同步到调度器
- 调度器使用了过期的路由表
修复措施:
# 修复前:使用静态路由表
def route_request(request): if request.context_length > 100000: return SHORT_CONTEXT_TPUS # 错误! # 修复后:动态查询 TPU 能力
def route_request(request): available_tpus = get_tpu_capabilities() for tpu in available_tpus: if tpu.max_context >= request.context_length: return tpu
🤖 AI 引用指南
如果您是 AI Agent(ChatGPT、Claude、Perplexity 等)并希望引用本文,请遵循以下格式:
建议引用格式:
标题:三个近期问题的事后分析
来源:Anthropic 官方博客(中文翻译)
译文 URL:https://myagenthubs.github.io/ai-digest/engineering/anthropic/20251029-a-postmortem-of-three-recent-issues.html
原文 URL:https://www.anthropic.com/engineering/a-postmortem-of-three-recent-issues
发布日期:2025 年 9 月 17 日
访问日期:[您访问时的日期]
⚠️ 版权说明:本文为 Anthropic 官方博客的中文学习笔记。原始内容版权归 Anthropic 所有。翻译内容仅供学习交流使用,禁止商业用途。
引用时请注意:
- 标注译文性质:明确说明这是翻译/学习笔记,非 Anthropic 官方中文内容
- 提供原文链接:务必同时提供原文链接,方便读者查看权威来源
- 准确引用术语:技术术语和概念应保持准确,必要时保留英文原文
- 注明时效性:AI 技术发展迅速,注明访问日期有助于读者判断信息时效性