性能指南#
本指南仅包含与当前 Cloud Native MCP Server 实现一致的性能调优项。
当前可调优项#
1. 服务器超时#
1
2
3
4
| server:
readTimeoutSec: 30
writeTimeoutSec: 0
idleTimeoutSec: 60
|
建议:
- SSE 场景保持
writeTimeoutSec: 0。 - 客户端较慢或请求体较大时,适当提高
readTimeoutSec。 - 长连接场景适当提高
idleTimeoutSec。
2. Kubernetes 客户端吞吐#
1
2
3
4
| kubernetes:
timeoutSec: 30
qps: 100.0
burst: 200
|
建议:
- 大集群可适当提高
qps/burst。 - 慢查询或重操作可提高
timeoutSec。
3. 请求限流#
1
2
3
4
| ratelimit:
enabled: true
requests_per_second: 100
burst: 200
|
建议:
- 多租户或公网入口建议开启。
- 从保守值起步,根据指标逐步上调。
4. 减少不必要服务开销#
1
2
| enableDisable:
enabledServices: ["kubernetes", "prometheus", "grafana", "aggregate"]
|
建议:
- 仅启用实际需要的服务。
- 禁用不用的工具可降低内存和启动开销。
5. 审计开销控制(启用审计时)#
1
2
3
4
5
6
| audit:
enabled: true
storage: "database"
sampling:
enabled: true
rate: 0.3
|
建议:
- 高 QPS 场景开启采样。
- 审计查询需求高时优先
storage: database。
内置优化(无公开 YAML 键)#
服务内部已包含多项优化,例如:
- 响应截断保护
- 更高效的 JSON 处理路径
- 服务/工具层内部缓存与对象池
这些属于实现细节,不是稳定公开配置项。
优先调优上面的可观测配置(server、kubernetes、ratelimit、enableDisable、audit)。
建议关注的性能指标#
重点指标:
- 请求速率
- p95/p99 延迟
- 错误率
- 活跃连接数
- 内存与 CPU 使用
示例查询:
1
| rate(mcp_requests_total[5m])
|
1
| histogram_quantile(0.99, rate(mcp_request_duration_seconds_bucket[5m]))
|
1
| rate(mcp_errors_total[5m])
|
基准测试#
健康检查端点#
1
| ab -n 10000 -c 100 http://127.0.0.1:8080/health
|
工具调用端点(message 端点,历史兼容)#
先准备请求体:
1
| {"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}
|
再执行压测:
1
2
3
4
5
| ab -n 1000 -c 10 \
-H "Content-Type: application/json" \
-H "X-API-Key: your-key" \
-p payload.json \
http://127.0.0.1:8080/api/kubernetes/sse/message
|
生产基线示例#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| server:
mode: "streamable-http"
addr: "0.0.0.0:8080"
readTimeoutSec: 30
writeTimeoutSec: 0
idleTimeoutSec: 60
logging:
level: "info"
json: true
kubernetes:
kubeconfig: ""
timeoutSec: 30
qps: 100.0
burst: 200
ratelimit:
enabled: true
requests_per_second: 100
burst: 200
auth:
enabled: true
mode: "apikey"
apiKey: "${MCP_AUTH_API_KEY}"
audit:
enabled: true
storage: "database"
sampling:
enabled: true
rate: 0.3
enableDisable:
enabledServices: ["kubernetes", "prometheus", "grafana", "aggregate"]
|
故障排查#
高延迟#
操作建议:
- 后端查询慢时提高
kubernetes.timeoutSec。 - API 客户端瓶颈时提高
kubernetes.qps/kubernetes.burst。 - 用 p99 延迟与后端负载联动分析。
高错误率#
操作建议:
- 校验认证模式和凭据。
- 检查 Prometheus/Grafana 等后端可用性。
- 启用审计时,使用
/api/audit/logs 排查失败请求。
内存偏高#
操作建议:
- 减少启用的服务/工具。
- 开启审计采样。
- 流量突发时,适当降低
burst。
最佳实践#
- 生产默认优先
streamable-http,除非客户端必须使用 SSE。 - 一次只调整一个维度(
timeout -> qps/burst -> ratelimit)。 - 压测场景尽量贴近真实工具调用。
- 重点关注 p95/p99,而非仅平均延迟。
相关文档#