Nacos 服务发现性能测试报告
Nacos 服务发现性能测试报告
程序员朱永胜测试目的
主要了解 Nacos 的服务发现性能负载和容量,协助我们更好的管理 Nacos 性能质量,帮助用户更快的运用评估 Nacos 系统负荷。
测试工具
我们使用自研的 PAS 性能评估服务平台进行压测,其原理是基于利用 JMeter 引擎,使用 PAS 自动生成的 JMeter 脚本,进行智能压测。
测试环境
1. 环境
指标 | 参数 |
---|---|
机器 | CPU 16 核,内存 32G |
集群规模 | 3 节点 |
Nacos 版本 | 1.0.0 |
2. 设置启动参数
1 | /opt/taobao/java/bin/java -server |
测试场景
以下测试场景都是服务发现重要接口:
- 验证 Nacos 服务发现注册实例的能力
- 验证 Nacos 服务发现查询实例的能力
- 验证 Nacos 服务发现注销实例的能力
测试数据
1. 注册实例
Nacos 服务发现注册实例接口的性能,调用 HTTP 接口测试。实测 3 节点集群不同压力下的性能表现:
机器 * 并发数 | 服务数 | 注册实例数 | TPS | RT(ms) | 最小 RT(ms) | 最大 RT(ms) |
---|---|---|---|---|---|---|
1*100 | 80301 | 84965 | 1793.41 | 54.63 | 0.8 | 1200.86 |
3*50 | 529321 | 819226 | 12574.8 | 15.8 | 0.45 | 3499.59 |
4*50 | 609726 | 836870 | 13000 | 18.54 | 0.46 | 3038.48 |
4*100 | 777262 | 927169 | 13257 | 35.65 | 0.48 | 3231.2 |
2. 查询实例
Nacos 服务发现查询实例接口的性能,调用 HTTP 接口测试。实测 3 节点集群不同压力下的性能表现:
机器 * 并发数 | 服务数 | 注册实例数 | TPS | RT(ms) | 最小 RT(ms) | 最大 RT(ms) |
---|---|---|---|---|---|---|
1*100 | 80301 | 84965 | 3092.16 | 30.86 | 0.81 | 509.4 |
3*50 | 529321 | 819226 | 12574.8 | 15.8 | 0.45 | 3499.59 |
4*50 | 609726 | 836870 | 15603 | 16.41 | 0.42 | 3042.17 |
4*100 | 777262 | 927169 | 13604 | 34.19 | 0.43 | 3434.1 |
3. 注销实例
Nacos 服务发现注销实例接口的性能,调用 HTTP 接口测试。实测 3 节点集群不同压力下的性能表现:
机器 * 并发数 | 服务数 | 注册实例数 | TPS | RT(ms) | 最小 RT(ms) | 最大 RT(ms) |
---|---|---|---|---|---|---|
1*100 | 80301 | 84965 | 1118.95 | 14.08 | 0.7 | 597.43 |
3*50 | 529321 | 819226 | 14508.53 | 11.23 | 0.4 | 3274.49 |
4*50 | 609726 | 836870 | 15476.93 | 16.02 | 0.38 | 3106.23 |
4*100 | 777262 | 927169 | 11940.9 | 40.33 | 0.42 | 51052.46 |
测试结论
Nacos 服务发现性能测试都是针对重点功能,通过对 3 节点规模集群进行压测,可以看到接口性能负载和容量。
- 压测容量服务数可达 60W,实例注册数达 110W,集群运行持续稳定,达到预期;(注: 由于本次注册实例使用的是 HTTP 接口, 并没有将心跳上报的 TPS 包括在内, 如果要支持百万实例的心跳上报, 需要集群水平扩容, 并调优 tomcat 和内核参数)
- 注册 / 查询实例 TPS 达到 13000 以上,接口达到预期;
本次只测试临时实例注册 / 查询 / 注销,未涉及持久实例 (后续输出);
本测试供给大家作为参考,如有不足或偏差,请指正! 如果对性能有其他需求,可以给我们提 issue。