并发和限流:为什么你的 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。 超过这个数,错误率会明显上升。