ingress-nginx 性能压测

ingress-nginx 性能压测

标签: kubernetes   ingress   nginx   benchmark   tke  

Ingress是目前Kubernetes集群流量接入的重要入口,了解其性能指标有助于用户选用合适的网络方案。

测试方案

通过wrk压测后端nginx服务,对比ingress-nginx和原生nginx以及直连后端性能的差异,如下图:

  • 方案1:压测后端Nginx,通过直连POD IP,Service IP以及External IP等方式
  • 方案2:压测经过Nginx代理,通过直连POD IP,Service IP以及External IP等方式
  • 方案3:压测经过Ingress,通过域名以及不同CPU和worker的性能差距

硬件配置

  • CPU:2.5GHz Intel® Xeon® Cascade Lake 处理器,睿频3.1GHz,8 cores
  • Memory: 32GB

测试环境

  • wrk: 0896020 [epoll] Copyright (C) 2012 Will Glozer
  • nginx:1.19.4
  • k8s:1.18.4
  • centos:7.9.2009
  • Linux:Linux version 4.14.105-19-0012 (root@TENCENT64.site) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16)

wrk的安装可以参考如下文章:Http性能压测工具 | wrk

性能测试

通过wrk测试,主要关注RPS(每秒请求量):

wrk -t8 -c200 -d30s --latency <待测试地址>

如Ingress测试命令:

wrk -t8 -c200 -d30s --latency http://nginx.qcloud.com/1kb.bin

以下表格数据的单位都是RPS

方案1:压测后端Nginx

分别对POD IP,Service IP以及External IP进行多次测试取平均值:

直连POD IP Service IP External IP
184301.41 164534.72 166734.20

方案2:压测经过Nginx代理

分别对POD IP,Service IP以及External IP进行多次测试取平均值:

直连POD IP Service IP External IP
86305.15 80890.86 80651.81

方案3: 压测经过Ingress

对比默认配置下,ingress-ingress的性能:

默认配置(process worker: auto) 优化配置(8 wrokers)
31143.15 36255.13

对比不同CPU,不同worker数量的性能差异,以下ingress-nginx已做性能调优:

CPU Worker RPS
1 1 11347.38
2 2 17564.26
4 4 29761.89
8 8 41613.75

不同方案性能对比

方案 访问方式 RPS 备注
后端Nginx External IP 166734
经过Nginx代理 External IP 80651 开启keepalive, 关闭log
ingress-nginx(原始) 域名 31143
ingress-nginx(优化) 域名 36255 调整worker,access-log, keepalive等

以上测试的影响因素还有很多,但是可以看出ingress-nginx的rps对比后端Nginx相差挺大的,而且最新版本的ingress-nginx优化过后的性能提升也不明显。

配置文件

本文测试文件见:https://github.com/DevOpsDays2020/ingress-nginx-benchmark

参考资料

  1. ingress nginx benchmark:https://qingwave.github.io/ingress-benchmark/

「真诚赞赏,手留余香」

请我喝杯咖啡?

使用微信扫描二维码完成支付

相关文章