跳转至

网关压力测试报告

本文介绍 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 机器执行如下命令,收集压测结果

    docker run -p 8089:8089 --network=host -v $PWD:/mnt/locust locustio/locust -f /mnt/locust/gateway-external-nginx.py --master
    
  • 在 Locust 压测机执行如下命令,模拟用户访问,执行压力测试

    docker run -p 8089:8089 --network=host -v $PWD:/mnt/locust locustio/locust -f /mnt/locust/gateway-external-nginx.py --worker --master-host=172.30.120.210
    
  • 压测脚本 gateway-external-nginx.py

    from locust import task
    from locust.contrib.fasthttp import FastHttpUser
    
    class ShellCard(FastHttpUser):
    
      host = "http://172.30.120.211:30296" # 被测服务的访问地址
      @task
      def test(self):
        header = {"Host": "external.nginx"}
        self.client.get("/", headers=header)
    

测试 nginx 吞吐量:三副本,不限制资源

测试结果

并发用户数 每秒吞吐量 CPU 使用量 分析
4 4300 58%——70% 资源未充分利用,理论上仍有能力处理更多请求。
8 5700 77%——83% 仍有少量资源空闲,可以尝试增加并发请求数,测试吞吐量上限。
12 6700 90%——95% 只有极少量资源空闲,CPU 接近满载,视为达到吞吐量上限。

Success

综上,当服务部署三副本且不限制资源用量时,DCE 5.0 云原生网关能够处理的最大并发请求数大约为 6000 到 7000,较同类产品而言可谓性能优异。

测试过程截图

  • 并发用户数为 4

    4 个并发用户

    4 个并发用户

  • 并发用户数为 8

    8 个并发用户

    8 个并发用户

  • 并发用户数为 12

    12 个并发用户

    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

    1c1g

    1c1g

  • contour 资源 2 核 1 G

    2c1g

    2c1g

  • contour 资源 3 核 2 G

    3c2g

    3c2g

探究 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

    4

    4

  • 并发用户数为 8

    8

    8

  • 并发用户数为 16

    16

    16

当 envoy 配置为 2 核 1 G

  • 并发用户数为 4

    4

    4

  • 并发用户数为 8

    8

    8

当 envoy 配置为 3 核 1 G

  • 并发用户数为 8

    8

    8

  • 并发用户数为 12

    12

    12

当 envoy 配置为 4 核 2 G

  • 并发用户数为 8

    8

    8

  • 并发用户数为 12

    12

    12

当 envoy 配置为 5 核 2 G

  • 并发用户数为 8

    8

    8

  • 并发用户数为 12

    12

    12

当 envoy 配置为 6 核 2 G

  • 并发用户数为 12

    12

    12

  • 并发用户数为 16

    16

    16

评论