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

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

你可能感兴趣的:(Rancher入门到精通,k8s探险记,好文收藏)