故障排查 · 可用性

529 Overloaded 到底意味着什么

截至 2026-10-08,Claude Code 官方错误文档写明:529 是 API 容量暂时满载,不是你的用量限额,也不计入配额。改代码没用,改重试策略才有用。

更新于 2026-10-08

订阅额度用完或频繁 429?可以改用按 token 计费的 API,一把 key 接着用。

#Claude API#529#Overloaded#重试策略

四个要点

529

上游拥塞

服务端整体容量紧张时返回,与你的密钥额度、参数、请求体都无关。

429

你被限流了

这个才是「你超了自己的速率或额度」。529 和 429 的处理方式完全不同,别用同一套逻辑。

退避

唯一有效的客户端应对

指数退避 + 抖动。立刻重试只会加重拥塞,并让你更快撞上限流。

多路

结构性缓解

同一任务能落到不同上游时,单点拥塞才不至于变成停工。代价是要接受模型差异。

529 和 429、503 有什么不同

529 表示服务端此刻整体过载,属于容量问题,通常是暂时的;429 表示你触碰了自己的速率或额度上限,是配额问题;503 一般指服务不可用或正在维护。三者都不代表你的请求写错了,但处理方式不同:529 应当退避重试,429 应当降速或提额,503 应当等待并关注服务状态页。把它们混在一个 catch 分支里,是最常见的错误处理写法。

为什么最近讨论变多

每当有新模型发布或大规模迁移发生,上游容量都会出现阶段性紧张,529 的讨论随之升温。这类波动通常随容量扩充而缓解,但对正在赶工的人来说,等厂商扩容不是可用的答案。

排查顺序

第一步

确认状态码确实是 529 而不是 429。两者的响应体不同,日志里要分开统计。

第二步

查厂商状态页。若是大范围事件,客户端再怎么改都只是缓解。

第三步

检查自己的重试逻辑是否在放大拥塞:无抖动、无上限、失败即刻重试都属于放大。用 Claude Code 的话,2.1.292 版(2026-10-06)起可以用 CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS 把 529 重试的基础延迟调长。

先别急着重试,先分清楚是哪个码

可以确认的

529 表示服务端容量拥塞、与请求内容无关,这是厂商文档中明确的语义。Claude Code 官方错误文档(2026-10-08 核对)的报错原文是 API Error: Repeated 529 Overloaded errors. The API is at capacity — this is usually temporary.,并写明 A 529 is not your usage limit and doesn't count against your quota,即 529 不是你的用量限额、不计入配额;文档还说容量按模型分别统计,可以运行 /model 换一个模型继续。Claude Code CHANGELOG 记载:2.1.286 起默认设置下一次失败的模型调用最多发出 14 次请求,2.1.292 新增 CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS。指数退避加抖动是被广泛验证的客户端应对方式。

不要当事实

「529 是厂商在悄悄限制重度用户」这类说法没有证据支持,本页不做断言。529 与 429 的语义区分是公开文档写明的,把两者混为一谈会让你选错处理方式。

两种应对

只在客户端做退避

实现成本低,能显著降低失败率。但上游持续拥塞时,你能做的只有等。

让任务能落到多个上游

单点拥塞不再等于停工。代价是要接受不同模型的习性差异,且任何一路都可能有自己的故障形态。

正确的重试写法

要点有三条。第一,指数退避而不是固定间隔:首次等 1 秒,之后逐次翻倍。第二,加随机抖动:所有客户端同时退避同一时长,会造成同步的重试洪峰,反而延长拥塞。第三,设上限:重试次数和总等待时长都要封顶,否则一次拥塞会让你的任务队列无限堆积。另外,流式请求在中途断开时不要盲目从头重试,先判断已收到的内容是否可续。如果你用的是 Claude Code:官方文档写明它在报错之前会对瞬时失败自动重试最多 10 次、指数退避(2026-10-08 复核);2.1.286 版(GitHub Release 2026-09-30)改了重试的计数方式,changelog 原文是 one limit now covers a whole model call, so with the default retry settings a failing call sends at most 14 requests,即一个上限覆盖整次模型调用,默认设置下一次失败的调用最多发出 14 次请求;2.1.292 版(GitHub Release 2026-10-06)新增了环境变量 CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS,changelog 原文是 to set a longer base delay for the backoff when retrying an overloaded (529) request,即给 529 重试的退避设置更长的基础延迟。changelog 没有写这个变量的默认值,本页不猜。

QCode 能接住什么、接不住什么

能接住的:同一把密钥可以在拥塞时切到别的模型家族继续干活,不必干等某一个模型恢复。接不住的:我们不是模型厂商,改不了厂商的服务器容量;经 QCode 的请求同样可能失败。我们能提供的是换模型家族的选择,而不是一份不出故障的承诺。

常见问题

收到 529 要改我的请求参数吗?

不用。529 与请求内容无关,改 max_tokens、换模型参数、精简 prompt 都不会让它消失。要改的是重试策略。

529 和 429 我可以用同一套重试逻辑吗?

不建议。529 应当退避后重试同一请求;429 意味着你需要降低发送速率或提高额度,盲目重试只会持续触发限流。

退避多久合适?

常见做法是首次 1 秒、逐次翻倍,叠加随机抖动,并对重试次数与总等待时长设上限。具体数值取决于你的任务能容忍多长延迟。用 Claude Code 的话(截至 2026-10-08 官方文档与 CHANGELOG):重试次数由 CLAUDE_CODE_MAX_RETRIES 控制,默认 10;2.1.286 起默认设置下一次失败的模型调用最多发出 14 次请求;2.1.292 起可以用 CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS 把 529 重试的基础延迟调长。

流式请求中途 529 了怎么办?

先看已经收到的内容是否可用。能续写就续,不能续再整体重试。盲目从头重试会重复计费,也会加重拥塞。

QCode 会遇到 529 吗?

可能会。厂商侧的拥塞是客观存在的,我们无法免疫;我们能做的是让同一任务可以切到别的模型家族,而不是承诺不出错。

多路可用性是不是就没有单点故障了?

不是。多路降低的是「一路挂了就停工」的概率,但每一路都有自己的故障形态,路由层本身也可能出问题。它是缓解,不是消除。

信息来源

状态码语义以厂商官方 API 文档为准。Claude Code 的重试行为与 CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS 来自 Anthropic 的 Claude Code CHANGELOG(2.1.286 与 2.1.292 条目)、这两个版本的 GitHub Release 页与 Claude Code 错误文档,均于 2026-10-08 抓取核对。本页不引用具体的第三方可用性百分比 —— 这类数字随时间波动,且我们没有权威的第三方测量来源。

拥塞时还有别的路可走

一把密钥覆盖多个模型家族,某一路紧张时可以立刻切换继续。

相关阅读

本页的状态码语义以各厂商官方文档为准,可能随版本调整;Claude Code 相关内容核对于 2026-10-08,以官方 CHANGELOG 与文档为准。本页内容不构成任何可用性承诺。

先体验,再决定

不确定选哪档?先买体验版(¥60/月),满意再升级,旧套餐剩余价值按比例退回余额。