服务器性能基准测试工具

一个全面的实验分析,比较了15种不同语言和框架的Model Context Protocol (MCP)服务器实现,包括Rust、Java、Go等,用于评估I/O密集型工作负载下的性能表现。

  • by thiagomendes
  • Java
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 thiagomendes/benchmark-mcp-servers-v2

使用说明

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/<timestamp>/ 带着一个 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 有关将新实现集成到基准套件中的说明。