欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

好文收藏-优化nginx-ingress-controller并发性能(转载)

程序员文章站 2024-03-08 18:56:52
...

https://cloud.tencent.com/developer/article/1537695

这两天遇到一个很有意思的应用场景:有一个业务应用部署在kubernetes容器中,如果将该应用以Kubernetes Service NodePort暴露出来,这时测试人员测得应用的页面响应性能较高,可以达到2w多的QPS;而将这个Kubernetes Service再用Ingress暴露出来,测试人员测得的QPS立马就较得只有1w多的QPS了。这个性能开销可以说相当巨大了,急需进行性能调优。花了一段时间分析这个问题,终于找到原因了,这里记录一下。

问题复现

问题是在生产环境出现了,不便于直接在生产环境调参,这里搭建一个独立的测试环境以复现问题。

首先在一台16C32G的服务器上搭建了一个单节点的kubernetes集群,并部署了跟生产环境一样的nginx-ingress-controller。然后进行基本的调优,以保证尽量与生产环境一致,涉及的调优步骤如下:

1.ClusterIP使用性能更优异的ipvs实现

$ yum install -y ipset
   
$ cat << 'EOF' > /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
ipvs_modules=(ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_fo ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack_ipv4)
for kernel_module in ${ipvs_modules[*]}; do
   /sbin/modinfo -F fil