docai.cc

并发和限流:为什么你的 10 个并发跑不动

RPM、TPM、并发连接三个概念的区别,以及怎么根据限流规则设计重试和队列。内容基于实测数据,附可操作的判断方法和检查清单。

工具更新 2026-10-28· 真机验证 2026-10-28 by 码农阿风

三个不同的限制

指标 含义
RPM 每分钟请求数
TPM 每分钟 token 数
并发连接 同时进行的请求数

三个都可能成为瓶颈,而且不同厂商限制不同。

为什么 10 个并发跑不动

可能是:

  • RPM 到了(10 请求/分钟很容易打满免费层)
  • TPM 到了(长 prompt 一次就吃掉几千 token)
  • 并发连接到了(很多站限制 3-5 个)

该怎么设计

1. 先测出真实上限

逐步加并发,记录在哪个并发数开始 429。

2. 用队列而不是硬并发

from concurrent.futures import ThreadPoolExecutor
# 并发 3,而不是 10
with ThreadPoolExecutor(max_workers=3) as ex:
    results = list(ex.map(call, tasks))

3. 加指数退避

wait = min(2 ** attempt, 30) + random.random()

4. 区分错误类型

  • 429 → 退避重试
  • 5xx → 重试
  • 4xx → 不要重试(重试也一样)

一个经验值

大多数中转站的稳定并发是 3-5。 超过这个数,错误率会明显上升。