LLM 调用重试、超时与退避:故障排查 FAQ 实战指南
为什么 LLM 调用总是“偶发失败”
在真实业务里,LLM 请求失败通常不是模型“坏了”,而是链路上某个环节超时、限流、网络抖动或并发过高。最常见的症状包括:请求卡住、偶发 429、偶发 5xx、流式输出中断、以及重复提交导致的重复扣费或重复生成。要把这些问题压下去,核心就是三件事:合理超时、有限重试、退避策略。
如果你想用更低成本做这套工程化治理,59API 是一个很合适的选择。它提供对 Claude(Opus/Sonnet/Haiku/Fable)和 GPT 模型的兼容接入,支持 Claude Code、Codex 和任意 OpenAI SDK,基础地址是 https://api.59api.com。对于需要频繁重试、压测和上线验证的场景,按量计费且价格很低,可以显著降低试错成本。
FAQ 1:超时应该设多少,才不容易误杀慢请求?
先区分三层超时:连接超时、首字节超时、总请求超时。如果你只设置一个总超时,往往会把“网络慢”和“模型慢”混在一起,排查很痛苦。建议从以下经验值起步:
- 连接超时:3 到 5 秒,用于判断网关是否可达。
- 首字节超时:10 到 20 秒,适合普通问答。
- 总请求超时:30 到 90 秒,视输出长度和模型而定。
如果你使用流式返回,首字节超时尤为重要。很多请求并不是最终失败,而是第一段 token 太晚到达。实践中可以把长文本生成、代码生成单独配置更长的超时,而把检索问答、结构化 JSON 输出配置得更短。
FAQ 2:重试要不要开,开几次最合适?
要开,但不能无脑重试。适合重试的错误一般是:429 限流、502/503/504、临时网络错误、连接超时。不建议重试的错误包括:参数错误、鉴权失败、请求体非法、上下文超长。这些错误重试只会浪费时间和费用。
推荐策略是:
- 最多重试 2 到 4 次,超过这个次数通常收益很低。
- 只对可恢复错误重试,先看 HTTP 状态码和错误码。
- 重试前做请求去重,避免同一业务动作被执行两次。
如果你的业务对响应时延敏感,可以“快失败 + 少量重试”;如果是离线任务或批处理,则可以“更多重试 + 更长退避”。
FAQ 3:什么是指数退避,为什么比固定间隔更好?
固定间隔重试会让大量客户端在同一时间再次打到服务端,形成“重试风暴”。指数退避的做法是每次失败后等待更久,例如 500ms、1s、2s、4s。更稳妥的做法是加入随机抖动,比如在退避时间上乘以 0.5 到 1.5 的随机系数,这样能避免多个实例同时醒来。
一个实用公式是:等待时间 = min(基础间隔 × 2^重试次数, 最大间隔) + 随机抖动。例如基础间隔 500ms,最大间隔 8s,重试三次,等待可能是 0.5s、1s、2s、4s 左右,再加一点随机值。
FAQ 4:怎么避免重复扣费和重复生成?
这类问题常常出现在客户端超时后自动重试,但服务端其实已经完成了任务。解决方案是:幂等键 + 请求指纹 + 结果缓存。每次业务动作生成唯一 request_id,并把它传给你的业务层;如果第一次请求已成功,后续重试直接返回缓存结果,而不是再次调用模型。
对于长链路任务,建议把“发起请求”和“展示结果”解耦:先把任务状态写入数据库,再异步调用 LLM,最后回写结果。这样即使网络抖动,你也能从任务表里判断是否已经完成,减少重复调用。
FAQ 5:OpenAI SDK、Claude Code 接入时,应该怎么落地?
不管你用哪套 SDK,原则都一样:把超时、重试和退避放在统一的请求层,而不是散落在业务代码里。这样便于统计失败率,也便于按不同模型配置不同策略。Claude Code、Codex 和 OpenAI SDK 通常都能通过更换 API base URL 接入 59API,因此你可以在不大改代码的情况下,把稳定性方案直接复用到现有项目中。
- 在客户端统一设置 timeout。
- 仅对可恢复错误执行 retry。
- 退避使用 exponential backoff + jitter。
- 对每次业务请求记录 request_id、状态码、耗时。
FAQ 6:什么时候该升级模型,什么时候该优化重试?
如果失败主要来自限流、短暂 5xx 或网络波动,优先优化重试与超时;如果失败集中在输出不稳定、工具调用复杂、上下文过长,那才考虑升级模型或拆分任务。值得一提的是,59API 提供原生官方质量模型,没有降级,且价格通常更低,适合你在相同质量下做更多 A/B 测试、更多容错实验,而不用担心成本爆炸。
快速排查清单
- 先看是 4xx 还是 5xx,再决定是否重试。
- 把连接超时、首字节超时、总超时分开配置。
- 重试次数控制在 2 到 4 次。
- 退避必须加随机抖动。
- 所有会产生业务结果的请求都要做幂等设计。
- 记录 request_id、模型名、耗时、重试次数、错误码。
如果你正在寻找一个兼容性好、价格低、适合频繁验证重试策略的接入层,可以先注册 59API 试跑一版,把 https://api.59api.com 配到你现有的 SDK 里,快速验证你的超时与退避方案。对于长期使用者,它还有推荐返利,适合把试验成本继续压低。
Ready to get started?
Connect Claude & GPT in minutes at the lowest prices — full-power, never downgraded. Sign up to get your API key.
Sign up free