网关压力测试报告¶
本文介绍 DCE 5.0 云原生网关在不同场景下的性能表现,便于您根据需求为网关配置合适的资源。
测试环境¶
开始测试之前,需要部署 DCE 5.0,下载安装测试工具,并准备好用于测试的压力机。
对象 | 角色 | 说明 |
---|---|---|
DCE 5.0 云原生网关 | 测试对象 | 采用一主一从的模式,部署位置:172.30.120.211 |
Locust | 测试工具 | 采用 1+4 的主从分布式运行模式,四台压测机的资源配置均为 8 核 8 G |
Nginx | 用于测试网关性能的演示服务 | 通过 DCE 5.0 云原生网关访问,访问地址为:http://172.30.120.211:30296/ |
contour | DCE 5.0 云原生网关的控制面 | 版本为 1.23.1 |
envoy | DCE 5.0 云原生网关的数据面 | 版本为 1.24.0 |
全局管理 | DCE 5.0 云原生网关依赖的组件 | 版本为 0.12.1 |
容器管理 | DCE 5.0 云原生网关依赖的组件 | 版本为 0.13.1 |
微服务引擎 | DCE 5.0 云原生网关依赖的组件 | 版本为 0.15.1 |
性能指标¶
- 吞吐量(RPS):每秒处理的请求数。结合 CPU 使用率,判断 DCE 5.0 云原生网关在特定资源配置下每秒可以处理的并发请求数。 吞吐量越高,说明网关性能越好
- CPU 使用率:测试处理特定数量的并发请求时,DCE 5.0 云原生网关实例的 CPU 使用情况。 当 CPU 使用量达到 90% 以上时,认为 CPU 接近满载,此时的吞吐量(RPS)是当前配置能够正常处理的最大并发请求数。
测试脚本¶
-
在 Locust Web 机器执行如下命令,收集压测结果
-
在 Locust 压测机执行如下命令,模拟用户访问,执行压力测试
-
压测脚本
gateway-external-nginx.py
测试 nginx 吞吐量:三副本,不限制资源¶
测试结果¶
并发用户数 | 每秒吞吐量 | CPU 使用量 | 分析 |
---|---|---|---|
4 | 4300 | 58%——70% | 资源未充分利用,理论上仍有能力处理更多请求。 |
8 | 5700 | 77%——83% | 仍有少量资源空闲,可以尝试增加并发请求数,测试吞吐量上限。 |
12 | 6700 | 90%——95% | 只有极少量资源空闲,CPU 接近满载,视为达到吞吐量上限。 |
Success
综上,当服务部署三副本且不限制资源用量时,DCE 5.0 云原生网关能够处理的最大并发请求数大约为 6000 到 7000,较同类产品而言可谓性能优异。
测试过程截图¶
-
并发用户数为 4
-
并发用户数为 8
-
并发用户数为 12
探究 contour 资源配置对 envoy 的性能影响¶
DCE 5.0 云原生网关是在开源项目 contour 和 envoy 的基础上进一步研发优化而来。contour 充当网关的控制平面,envoy 充当数据平面。
创建 DCE 5.0 云原生网关时,系统要求必须为网关配置不低于 1 核 1 G 的资源。因此,本次测试中 contour 的资源限制最低为 1 核 1 G。
此外,为了更好地体现 contour 的资源配置的影响,将 envoy 的资源限制设置为 6 核 3 G, 保证 envoy 自身始终具有较高的性能,不会因为自身资源不足而影响测试结果。
为保证压测机器资源负载正常,默认 Locust users 为 8。
测试结果¶
contour 资源规格 | 每秒吞吐量 | CPU 使用量 | 分析 |
---|---|---|---|
1 核 1 G | 3700 | 53%——69% | contour 的资源配置从 1 核 1 G 到 2 核 1 G,再到 3 核 2 G,但网关每秒吞吐量一直维持在 3700 左右,上下变动幅度只有 100。CPU 使用率也维持在 50%——70%左右,整体变化非常小。 |
2 核 1 G | 3600 | 55%——72% | |
3 核 2 G | 3800 | 57%——69% |
Success
这说明 contour 的资源配置对 envoy 的性能几乎没有影响。
测试过程截图¶
-
contour 资源 1 核 1 G
-
contour 资源 2 核 1 G
-
contour 资源 3 核 2 G
探究 envoy 资源配置对吞吐量的影响¶
envoy 固定为 1 副本,contour 配置为 1 核 1 G,被测试服务 nginx 配置为 3 副本,不限制资源用量。
测试结果¶
envoy 资源规格 | 并发用户数 | 每秒吞吐量 | CPU 使用量 | 分析 |
---|---|---|---|---|
1 核 1 G | 4 | 1016 | 18%——22% | 当 envoy 的资源配置不变时,即使并发用户数成倍增加,网关吞吐量也变化不大。 |
8 | 1181 | 19%——20% | ||
16 | 1090 | 19%——22% | ||
2 核 1 G | 4 | 2103 | 28%——41% | 并发用户数为 4 时,当资源配置从 1 核增加到 2 核,吞吐量也增加了 1000 左右。 |
8 | 2284 | 38%——47% | ||
3 核 1 G | 8 | 3355 | 59%——70% | 并发用户数为 8 时,当资源配置从 1 核增加到 3 核,吞吐量也增加了 2000 左右。 |
12 | 3552 | 52%——59% | ||
4 核 2 G | 8 | 3497 | 58%——80% | 并发用户数为 12 时,当资源配置从 3 核增加到 5 核,吞吐量也增加了 1000 左右。 |
12 | 4250 | 78%——86% | ||
5 核 2 G | 8 | 3573 | 60%——81% | |
12 | 4698 | 68%——78% | ||
6 核 2 G | 12 | 4574 | 78%——85% | 当配置为 6 核 2 G 时,吞吐量为 5400 左右,CPU 使用量也到达了 90% 以上,接近满载。 |
16 | 5401 | 90%以上 |
Success
综上:
- envoy 的 CPU 配置对吞吐量起决定性因素。
- 在当前压测资源下,通过 envoy 访问 nginx 的吞吐量能够达到直接访问 nginx 的吞吐量的 80% 以上。
测试过程截图¶
当 envoy 配置为 1 核 1 G¶
-
并发用户数为 4
-
并发用户数为 8
-
并发用户数为 16
当 envoy 配置为 2 核 1 G¶
-
并发用户数为 4
-
并发用户数为 8
当 envoy 配置为 3 核 1 G¶
-
并发用户数为 8
-
并发用户数为 12
当 envoy 配置为 4 核 2 G¶
-
并发用户数为 8
-
并发用户数为 12
当 envoy 配置为 5 核 2 G¶
-
并发用户数为 8
-
并发用户数为 12
当 envoy 配置为 6 核 2 G¶
-
并发用户数为 12
-
并发用户数为 16