跳到主要内容
版本:3.9.x

性能测试基准

本文档将说明测试环境、方法和结果,以帮助你评估 API7 企业版在各种负载条件下的性能表现,以及如何自行进行性能测试。

除了参考性能测试基准外,你还可以使用性能基准测试仓库中的设置进行自己的性能测试。该仓库详细记录了测试所用的所有资源部署配置,以及每个测试场景的具体配置信息。通过该仓库,你可以按照提供的指南在自己部署的 API7 网关上进行性能基准测试。在开始测试之前,请确保你获得的性能基准与测试结果大致一致。

测试方法

  • 环境:Kubernetes。
  • 测试场景
    1. 仅启用 mocking 插件以获取 API7 网关的基准性能值。该插件会返回指定格式的模拟数据,请求不会被转发到上游服务器;
    2. 未启用任何插件;
    3. 仅启用 limit-count 限流插件;
    4. 仅启用 key-auth 身份验证插件;
    5. 同时启用 key-authlimit-count 插件。
  • 路由和消费者
    1. 单个路由和单个消费者;
    2. 100 个路由和 100 个消费者。
  • 样本大小:测试数据收集:每个测试用例运行 5 次,每次运行持续 2 分钟。报告的结果是 5 次测试运行的平均值。

性能测试基准结果

测试场景路由/消费者数量转发到上游QPSP99 (毫秒)P95 (毫秒)
仅启用 mocking1 个路由,0 个消费者310,392.071.161.08
未启用任何插件1 个路由,0 个消费者167,019.372.302.16
未启用任何插件100 个路由,0 个消费者162,753.172.312.16
仅启用 limit-count1 个路由,0 个消费者145,370.102.432.24
仅启用 limit-count100 个路由,0 个消费者143,108.402.452.25
仅启用 key-auth1 个路由,1 个消费者147,869.492.412.22
仅启用 key-auth100 个路由,100 个消费者145,070.932.432.25
同时启用 key-authlimit-count1 个路由,1 个消费者136,725.472.432.26
同时启用 key-authlimit-count100 个路由,100 个消费者133,782.952.482.30

测试环境

本次性能测试在 AWS EKS 环境中进行。在搭建测试环境时,必须确保 API7 网关、NGINX 上游和性能测试工具 wrk2 部署在不同的节点上,且均使用 c5.4xlarge EC2 实例。这种配置确保了资源的合理分配,并避免了资源争用问题。

在压力测试期间,建议使用 top 命令或其他系统监控工具实时监控 API7 网关和 NGINX 上游服务器的进程资源利用率。这能确保每次测试都达到 API7 网关的性能瓶颈,从而获得准确可靠的性能测试结果。

以下是本次测试涉及的主要组件及其规格概述:

名称详情
节点Amazon Linux 2 (AL2_x86_64)
Kubernetes1.29
API7 网关3.2.13.0
上游服务nginx/1.25.4
性能基准测试工具wrk2

部署拓扑

K8s 部署

测试配置

对于本次测试,调整了 worker_processes 的数量,以匹配运行 API7 网关的节点上可用的虚拟核心数(即 16 个 vCPU)。未对系统配置进行进一步的修改。

附加信息