MCP服务器性能基准v2
一项全面的实验分析,比较了Rust、Java(Spring MVC、WebFlux、Virtual Threads)、Quarkus、Micronaut(JVM和GraalVM原生映像)、Go、Bun、Node.js和Python中的15个模型上下文协议(MCP)服务器实现。三次独立运行,总计3990万个请求,具有I/O绑定工作负载(Redis+HTTP API),所有服务器的错误率为0%。
结果与分析
完整结果、实施细节和建议: https://www.tmdevlab.com/mcp-server-performance-benchmark-v2.html
主要发现
| 服务器 | RPS | 平均延迟 | RAM平均值 |
|---|---|---|---|
| 生锈 | 4845 | 5.09毫秒 | 10.9 MB |
| 夸克 | 4739 | 4.04毫秒 | 194 MB |
| 转到 | 3616 | 6.87毫秒 | 23.9 MB |
| java | 3540 | 6.13毫秒 | 368 MB |
| java vt | 3482 | 9.03毫秒 | 350 MB |
| 夸克原生 | 3449 | 10.36ms | 36MB |
| 微型发射器 | 3382 | 9.75毫秒 | 216 MB |
| java网络流量 | 3032 | 8.89毫秒 | 485 MB |
| java vt本机 | 2447 | 19.06毫秒 | 194 MB |
| java webflux原生 | 2413 | 14.43毫秒 | 351 MB |
| java原生 | 2316 | 16.20毫秒 | 178 MB |
| 微型宇航员本机 | 2161 | 20.75毫秒 | 63 MB |
| 面包 | 876 | 48.46毫秒 | 549 MB |
| nodejs | 423 | 123.50毫秒 | 395 MB |
| python | 259 | 251.62毫秒 | 259 MB |
所有3990万个请求均已完成 0%错误 在所有15台服务器上运行3次。
项目结构
benchmark-mcp-servers-v2/
├── rust-server/ # rmcp 0.16 + Tokio + deadpool-redis
├── go-server/ # mcp-go + tuned http.Transport
├── java-server/ # Spring Boot 4 MVC (blocking thread pool)
├── java-vt-server/ # Spring Boot 4 + Project Loom Virtual Threads
├── java-webflux-server/ # Spring Boot 4 WebFlux (Reactor / Netty)
├── quarkus-server/ # Quarkus 3.31.4 (Vert.x / Mutiny)
├── micronaut-server/ # Micronaut 4.10.8 / MCP SDK 0.0.19
├── nodejs-server/ # MCP SDK + Express, WEB_CONCURRENCY=4
├── python-server/ # FastMCP + uvloop, 4 workers
├── api-service/ # Go HTTP API (100k in-memory products)
├── infra/ # Redis configuration
├── benchmark/
│ ├── benchmark.js # k6 load test (50 VUs, 5 min, 60s warmup)
│ ├── run_benchmark.sh # Full benchmark orchestration script
│ ├── collect_stats.py # Docker stats collection
│ ├── consolidate.py # Results aggregation across runs
│ └── results/ # Raw results per run (summary.json, k6.json)
├── config/ # Shared benchmark configuration
├── build-server-images.sh # Build all server Docker images
├── docker-compose.yml
└── TMDevLab/ # Published post (HTML/CSS/JS)本机映像变体(Quarkus、Java MVC、Java VT、WebFlux、Micronaut)是由每个服务器目录中的单独Dockerfiles构建的(Dockerfile.native).
基准工作负载
每台服务器都实现了三个由真实I/O支持的工具:
| 工具 | 操作 |
|---|---|
search_products | HTTP获取 /products/search +Redis ZRANGE(并行) |
get_user_cart | Redis HGETALL+HTTP GET /products/{id} +Redis LRANGE(并行) |
checkout | HTTP POST /cart/calculate +Redis管道INCR+RPUSH+ZADD(并行) |
测试配置: 50个VU,5分钟持续负载,排除60秒预热,每次服务器测试前刷新Redis并重新播种,每个容器2个vCPU/2 GB。
运行基准
先决条件
- Docker和Docker Compose
- Python 3(用于统计数据收集和整合)
- k6(可选——编排脚本使用容器化运行器)
构建图像
./build-server-images.sh运行完整基准测试
cd benchmark
./run_benchmark.sh结果保存到 benchmark/results// 带着一个 summary.json 每次跑步。
手动运行单个服务器
# Start infrastructure
docker-compose up -d mcp-redis mcp-api-service
# Start the target server
docker-compose up -d mcp-rust-server
# Run k6
k6 run -e SERVER_URL=http://localhost:8095/mcp benchmark/benchmark.js服务器端口
| 服务器 | 端口 |
|---|---|
| api服务 | 8100 |
| java | 8080 |
| java原生 | 8084 |
| 去 | 8081 |
| python | 8082 |
第8083章 |面包|8094| |锈迹|8095| |夸克|8085| |夸克原生|8086| |java vt|8087| |java vt本机|8088| |javawebflux | 8089| |javawebflux原生|8090| |微型宇航员|8091| |微距人|8092|
添加新服务器
看 ADDING_SERVERS.md 有关将新实现集成到基准套件中的说明。
