先把当时的情况摆出来。三个 Agent 共用一个检索工具,工具对上游有每秒十次的限制,高峰期一个 Agent 的重试把配额吃满,另外两个直接报错,用户侧看到间歇性失败。

这类报错背后常见的原因有几处,逐个排除就行。限流器建在 Agent 内部,各算一份配额。少数情况下是重试没有全局预算,互相放大。

还有一种情况,工具调用没有优先级区分。另外,失败后立即重试,进一步抢占配额。

先统计各 Agent 的实际调用量

python tool_calls.py --by-agent --file tool_calls.json

接着把限流器下沉到工具服务侧

python tool_gateway.py --rate 10 --scope global

给重试加全局预算与抖动

python tool_gateway.py --retry-budget 20 --jitter 0.3

末了按 Agent 设权重后压测

python bench_agents.py --agents 3 --qps 12

中间停过一次,把已经改的东西回滚干净,再重新来一遍。

恢复的判定其实很直接。总调用速率稳定在每秒十次,三个 Agent 都能拿到配额,错误率低于 1%。

配额要放在共享资源那一侧,放在调用方等于没有限流。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189