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 ips