LiteLLM失败重试策略,指数退避

生产环境调用大模型接口时,上游经常因为限流(429)、服务端异常(5xx)或响应超时导致请求失败。
LiteLLM 作为统一网关,如果不配置失败重试策略,一次抖动就会让业务直接报错。
本文以 config.yaml 为例,演示怎么设置 LiteLLM 的重试次数、指数退避和超时参数,并给出验证方法,照着做就能让网关在故障时自动恢复。

先搞懂这几个参数再动手

LiteLLM 的重试主要靠 Router 层控制,你需要先认识三个核心参数:

  • num_retries:请求失败后最多重试几次。生产环境建议设 2 到 3,太低不够稳,太高会拖垮下游。
  • request_timeout:单次请求最长等待时间。如果模型正常需要 1 分钟才能出结果,这个值就不能小于 60 秒,否则会误判超时。
  • cooldown_time:某个上游连续失败后进入冷却状态的时间。冷却期内新请求会转发到其他可用模型,而不是继续打向故障节点。

指数退避在 LiteLLM 内部默认启用,重试间隔会按 1s、2s、4s 逐步拉长,避免集中重试压垮上游。
你不需要自己实现退避算法,但可以通过调整重试次数来间接控制总等待时长。

生产可用的 config.yaml 配置示例

打开 LiteLLM 启动时使用的 config.yaml,在 router_settings 中加入重试相关配置。
下面是一个适合线上环境的模板:

model_list:
  - model_name: gpt-4o
    litellm_params:
      model: openai/gpt-4o
      api_key: sk-xxxx
      api_base: https://api.openai.com

router_settings:
  num_retries: 3
  request_timeout: 600
  cooldown_time: 30
  allowed_fails: 2

保存后重启 LiteLLM,让它读取新配置:

litellm --config config.yaml --port 4000

如果你不想改配置文件,也可以临时用环境变量覆盖:

export LITELLM_NUM_RETRIES=3
export LITELLM_REQUEST_TIMEOUT=600

注意:不同 LiteLLM 版本的参数名可能略有差异,建议以你安装版本的官方文档为准。
上面的配置在实际项目里已经能稳定工作。

如何验证重试策略真的生效

启动服务后,用 curl 模拟一次会失败的请求。
先故意把上游地址改成一个不存在的端口,观察 LiteLLM 是否自动重试:

curl http://localhost:4000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
        "model": "gpt-4o",
        "messages": [{"role": "user", "content": "你好"}]
      }'

在 LiteLLM 的控制台日志里,你会看到类似 Retrying request... attempt 2 的记录。
记录时间戳,对比两次重试的间隔,如果间隔依次变大,说明指数退避生效。

也可以使用下面命令直接查看日志:

litellm --logs

如果希望验证超时重试,可以把 request_timeout 临时改成 1 秒,再请求一个正常需要 10 秒的模型。
看到请求在 1 秒后被判定超时并进入重试流程,就说明超时参数起作用了。
测试完记得把值改回来。

避坑指南与高频疑问

重试参数虽小,但配置不当反而会引发新问题。
这里整理了几个最容易踩的坑:

  • 重试次数别设太高。 3 次足够应对大多数瞬时故障。超过 5 次会让用户在接口恢复前等很久,还会造成重复扣费。
  • 超时时间要覆盖模型最大响应时长。 大模型流式输出可能持续几分钟,超时设置太短会导致明明在正常生成却被拦腰截断。
  • 不要只重试不冷却。 如果上游已经 5xx 持续 1 分钟,继续重试只会加重故障。配合 cooldown_time 让流量自动切换可用节点更稳妥。
  • 429 限流优先看 Retry-After 响应头。 LiteLLM 对部分上游会解析该响应头并自动等待,建议不要把 num_retries 设得比上游限流窗口还大。

有读者常问:重试会不会导致同一笔请求重复扣费?
会。
如果上游已经处理成功但响应超时,客户端重试可能产生两次费用。
所以 request_timeout 要根据模型实际耗时合理设置,不要为了追求快而盲目调小。

还有读者问:是不是所有错误都值得重试?
不是。
参数错误、鉴权失败这类 4xx 错误重试多少次都一样,建议只在网络抖动、5xx、429 等场景让 LiteLLM 自动重试。

上线前的最后检查

配置改完后,按下面清单确认一遍再投入使用:

  1. num_retries 是否在 2 到 3 之间。
  2. request_timeout 大于最慢模型的平均响应时间。
  3. cooldown_time 已设置,避免故障节点被反复请求。
  4. 用异常流量测试过重试日志,确认退避间隔递增。

如果你正在处理 LiteLLM 失败重试策略、指数退避或超时重试的生产参数调整,建议先按本文的配置跑通流程,再根据自己模型的实际耗时微调。
遇到日志里看不出重试次数时,优先检查 LiteLLM 版本是否支持当前参数名,然后在控制台观察响应时间分布,重试策略是否生效一眼就能看出来。

分享到:
上一篇
中转网关做请求内容脱敏,自动过滤手机号身份证等敏感信息
下一篇
Ollama配合ufw防火墙,仅允许内网访问11434端口
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意