故障排查 · 可用性

529 Overloaded 到底意味着什么

它说的是上游此刻容量紧张,不是你的请求有问题。改代码没用,改重试策略才有用。

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

四个要点

529

上游拥塞

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

429

你被限流了

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

退避

唯一有效的客户端应对

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

多路

结构性缓解

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

529 和 429、503 有什么不同

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

为什么最近讨论变多

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

排查顺序

第一步

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

第二步

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

第三步

检查自己的重试逻辑是否在放大拥塞:无抖动、无上限、失败即刻重试都属于放大。

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

可以确认的

529 表示上游容量拥塞、与请求内容无关,这是厂商文档中明确的语义。指数退避加抖动是被广泛验证的客户端应对方式。

不要当事实

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

两种应对

只在客户端做退避

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

让任务能落到多个上游

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

正确的重试写法

要点有三条。第一,指数退避而不是固定间隔:首次等 1 秒,之后逐次翻倍。第二,加随机抖动:所有客户端同时退避同一时长,会造成同步的重试洪峰,反而延长拥塞。第三,设上限:重试次数和总等待时长都要封顶,否则一次拥塞会让你的任务队列无限堆积。另外,流式请求在中途断开时不要盲目从头重试,先判断已收到的内容是否可续。

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

能接住的:同一把密钥可以在拥塞时切到别的模型家族继续干活,不必等单一上游恢复。接不住的:我们不是厂商,改不了上游的容量。而且必须说清楚 —— 我们自己也有失败请求:过去 7 天我方观测到的失败形态主要是 502(网关侧),529 为 0 条。把「不会出问题」当卖点的服务,通常只是没有公开自己的失败数据。我们能提供的是多路可选和可查的失败记录,而不是一份不出故障的承诺。

常见问题

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

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

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

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

退避多久合适?

常见做法是首次 1 秒、逐次翻倍,叠加随机抖动,并对重试次数与总等待时长设上限。具体数值取决于你的任务能容忍多长延迟。

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

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

QCode 会遇到 529 吗?

上游拥塞是客观存在的,我们无法免疫。实际观测中我方过去 7 天的失败以 502 为主、529 为 0;我们能做的是让同一任务可以切到别的模型家族,而不是承诺不出错。

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

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

信息来源

状态码语义以厂商官方 API 文档为准。本页不引用具体的第三方可用性百分比 —— 这类数字随时间波动,且我们没有权威的第三方测量来源。

拥塞时还有别的路可走

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

相关阅读

本页的状态码语义以各厂商官方文档为准,可能随版本调整。页内提到的我方失败率观测来自自有日志的特定时间窗口,不构成可用性承诺。