跳转到正文
收录 AI 工具提交开放中 免费提交

HTTP 429 限流

调用模型API时收到 HTTP 429 状态码,表示请求频率超过了供应商设定的速率限制。

错误代码
HTTP 429
当前状态
已解决
影响环境
API Gateway
浏览
8.2k

症状

API 返回 HTTP 429 Too Many Requests 响应,通常附带 Retry-After 头部指示等待时间。应用侧表现为:

  • 批量请求中部分调用失败,返回限流错误。
  • 日志中出现集中的 429 错误,且与请求峰值时段吻合。
  • 用户感知为响应超时或功能间歇性不可用。

常见原因

  • 瞬时并发过高:短时间内发起大量并行请求,超过供应商的每分钟请求数(RPM)或每分钟 Token 数(TPM)限制。
  • 缺少请求队列:应用直接向 API 发起调用,未经过请求队列进行流量整形。
  • 配额等级不匹配:使用的 API 密钥对应的配额等级较低,而业务增长已超出该等级的上限。
  • 重试风暴:失败后立即重试且未引入退避策略,导致重试请求进一步加剧限流。

排查步骤

  1. 查看 API 响应头中的 x-ratelimit-remainingx-ratelimit-reset 字段,确认当前剩余配额和重置时间。
  2. 统计过去一小时内的请求频次分布,识别是否存在请求峰值与限流的时间关联。
  3. 检查应用代码中是否实现了指数退避重试(exponential backoff),首次重试间隔建议不低于 1 秒,最大退避时间设为 60 秒。
  4. 登录供应商控制台,确认当前 API 密钥的配额等级和已用量,评估是否需要申请提升配额。
  5. 在应用层引入请求队列(如 Redis 队列或内存信号量),将并发请求控制在配额范围内。

预防

  • 在架构层面引入速率限制中间件,在请求到达 API 之前进行流量控制。
  • 实现请求合并策略,将短时间内的多个相似请求合并为一次调用。
  • 设置用量监控告警,当配额使用率达到 80% 时提前通知运维团队。
  • 为不同业务模块分配独立的 API 密钥,隔离配额使用,避免单一模块耗尽全局配额。