性能基准
本页面记录了 API7 Gateway 已发布的基准测试结果及其背后的方法,因此你既可以理解这些数字,也可以在自己的环境中重 现它们。所有测试资产(ADC 配置、wrk2 脚本和部署清单)均可在 api7-gateway-performance-benchmark 存储库中获取。
方法论
该基准测试使用一组固定的变量,以便跨测试运行和环境的结果具有可比性:
- 单个网关节点:一个 API7 网关数据面实例,其中
worker_processes配置为与主机的 vCPU 数量匹配。要构建干净的单核基准,请从worker_processes: 1开始,并在确认单核数字后进行扩展。 - 排除上游对上限数量的干扰:仅启用
mocking插件来测量 API7 网关的原始请求处理上限。mocking插件返回预设响应,而不转发到上游。这个数字与现实世界的吞吐量无法比较。 - 转发到上游的真实场景:每个其他测试行都使用运行
nginx/1.25.4的真实 NGINX 上游,配置有access_log off和静态 200 字节响应,以便上游本身从来都不是瓶颈。 - 样本大小:每个测试用例运行 5 次,每次运行 2 分钟,报告的结果是 5 次运行的平均值。
- 测试场景:5 个插件组合 × 2路由/消费者量表 = 10 个测试用例:
1.仅
mocking(基线上限) 2.无插件 3.仅limit-count4.仅key-auth5.key-auth和limit-count
每个插件场景均使用 (a) 1 个路由/ 1 个消费者和 (b) 100 个路由/ 100 个消费者运行,以衡量资源计数对匹配和插件执行。
已发布结果 — AWS EKS
这些结果是在 AWS EKS 环境中使用运行 Amazon Linux 2 (AL2_x86_64) 的 EC2 实例(16 个 vCPU,32 GB RAM)获得的。Kubernetes 1.29。API7 网关、NGINX 上游和 wrk2 各自在同一 VPC 中的单独节点上运行,以避免资源争用。
转发到上游 列将仅模拟上限(其中 API7 网关返回预设响应并且没有请求离开网关)与实际代理场景区分开来。仅模拟行测量网关请求处理管道的理论上限;它与现实世界的吞吐量不可比,其中后端和网络成为额外的因素。调整生产尺寸时,请使用带有 Forward to Upstream: True 的行。
- AWS EKS (c5.4xlarge)
- Single-host baseline (1 worker)
| 测试场景 | 路由/消费者 | 转发到上游 | QPS | P99(毫秒) | P95(毫秒) |
|---|---|---|---|---|---|
仅 mocking | 1 个路由,0 个消费者 | False | 310,392.07 | 1.16 | 1.08 |
| 无插件 | 1 个路由,0 个消费者 | True | 167,019.37 | 2.30 | 2.16 |
| 无插件 | 100 个路由,0 个消费者 | True | 162,753.17 | 2.31 | 2.16 |
仅 limit-count | 1 个路由,0 个消费者 | True | 145,370.10 | 2.43 | 2.24 |
仅 limit-count | 100 个路由,0 个消费者 | True | 143,108.40 | 2.45 | 2.25 |
仅 key-auth | 1 个路由,1 个消费者 | True | 147,869.49 | 2.41 | 2.22 |
仅 key-auth | 100 个路由,100 个消费者 | True | 145,070.93 | 2.43 | 2.25 |
key-auth + limit-count | 1 个路由,1 个消费者 | True | 136,725.47 | 2.43 | 2.26 |
key-auth + limit-count | 100 个路由,100 个消费者 | True | 133,782.95 | 2.48 | 2.30 |
此基线是通过使用主机网络在同一台计算机上运行的 API7 网关 (worker_processes: 1)、NGINX 上游和 wrk2 获取的。其目的是在没有网络延迟的情况下隔离单核吞吐量。
| 测试场景 | 路由/消费者 | QPS | P99(毫秒) | P95(毫秒) |
|---|---|---|---|---|
| 无插件 | 1 个路由,0 个消费者 | 24,129.22 | 0.093 | 0.082 |
| 无插件 | 100 个路由,0 个消费者 | 23,652.91 | 0.096 | 0.084 |
仅 limit-count | 1 个路由,0 个消费者 | 20,495.10 | 0.104 | 0.092 |
仅 limit-count | 100 个路由,0 个消费者 | 20,462.31 | 0.104 | 0.094 |
仅 key-auth | 1 个路由,1 个消费者 | 21,019.04 | 0.100 | 0.089 |
仅 key-auth | 100 个路由,100 个消费者 | 20,444.81 | 0.109 | 0.095 |
key-auth + limit-count | 1 个路由,1 个消费者 | 18,940.39 | 0.110 | 0.097 |
key-auth + limit-count | 100 个路由,100 个消费者 | 18,193.88 | 0.110 | 0.098 |
单主机和多节点数量不能直接比较 — 多节点 AWS EKS 设置可跨 16 个 vCPU 进行扩展,而单主机基准将 API7 网关限制为单个 worker_process。在扩展之前,使用单主机表验证你自己的单核结果是否与参考大致一致。