先把当时的情况摆出来。三个 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%。
配额要放在共享资源那一侧,放在调用方等于没有限流。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。
