给MCP网关做压测,最怕的不是跑不出数字,是跑出来的数字没法用。这次针对maximhq/bifrost的测试,目标很明确:把每请求延迟开销、并发工具调用吞吐、持续负载下的内存占用这三项指标,压出硬数据。

测试环境选在AWS t3.xlarge上,4 vCPU、16GB内存、Ubuntu 22.04。压测工具用k6 v0.54.0,配了一个自定义的MCP JSON-RPC stdio执行器。被测版本是Bifrost v0.8.2,开了语义缓存,接了三个上游LLM提供方:B-Lost中继、Anthropic直连、OpenAI。

负载曲线是这样设计的:3分钟内从10个虚拟用户爬升到500个,然后在500并发上持续5分钟。每个虚拟用户每800毫秒发一次MCP的tools/call请求,JSON载荷2KB。整套持续负载测试跑8分钟。

核心数字先摆出来:Bifrost给每次MCP工具调用增加的中位开销约为12ms,主要来自JSON-RPC解析和路由逻辑。但同一轮8分钟压测里,31%的语义缓存命中率把上游LLM的token成本压低了28%。

压力继续往上加,故障阈值出现在720并发虚拟用户附近,大约5900 RPS。这个点上三个信号同时恶化:p99延迟冲到2.1秒,错误率爬到4.3%,主要是上游提供方限流引发的ECONNRESET;内存峰值达到1.8GB,随后Bifrost内部的熔断器触发故障转移。

这组数据指向一个判断:在4 vCPU实例上,Bifrost的MCP网关模式大致能稳在5000 RPS左右。对中等规模的生产级agent集群来说,这个量级够用——按每天4亿次以上工具调用来算,落在可承载区间内。

那什么时候该上这个网关?素材给了三个明确的适用场景:

  • 多租户agent部署:需要跨50个以上并发agent会话做集中故障转移、负载均衡和按租户的预算管控。直连stdio的MCP服务器缺少横向扩展的基础能力。
  • 成本敏感型负载:agent反复调用相同工具时,语义缓存能省token,这在RAG检索和SQL查询模式里很常见。压测显示零代码改动就拿到28%的成本下降。
  • 异构提供方路由:agent栈需要按工具复杂度在Claude、GPT-4和开源权重模型之间动态路由时,Bifrost统一的OpenAI兼容API省掉了为每家提供方单独维护SDK的麻烦。

反过来,两种情况不值得付这个开销:在开发者笔记本上跑单租户CLI agent,或者每天工具调用不到1万次。12ms的中位延迟加上550MB内存占用,在低规模场景里换不回相应的收益。

复现路径也给了。配置侧开mcp_mode,端口8080,三个上游按名称挂载,语义缓存enabled设true、ttl设3600。压测脚本用k6,stages分两段:3分钟到500,再5分钟维持500,请求体是标准的JSON-RPC 2.0 tools/call,带read_file工具和路径参数,校验条件是状态码200且延迟低于200ms。启动命令用docker挂载config.yaml,再跑k6指定500虚拟用户、8分钟时长。

结论落在一条分界线上:生产级agent部署如果超过3000 RPS,或者需要多提供方故障转移,12ms的开销换语义缓存、熔断器和统一API带来的运维杠杆,是划算的。低于1000 RPS,直连stdio的MCP服务器更简单,也更省资源。