概述

<p>四层负载均衡采用开源软件LVS(Linux Virtual Server)+ Keepalived的方式实现负载均衡,七层负载均衡由Nginx实现负载均衡。</p> <p>四层监听经过LVS后直接到达后端服务器,而七层监听经过LVS后,还需要再经过Nginx,最后到达后端服务器。七层监听比四层监听多了一个处理环节,因此,七层性能没有四层性能好。</p> <p>如果您使用七层监听进行压力测试,发现压测性能比较低。使用了两台ECS的七层负载均衡监听性能不如使用了一台ECS的四层负载均衡监听性能,除了七层本身的性能比四层低外,以下情况也可能会造成七层压测性能低:</p> <p>&bull;&nbsp;&nbsp;&nbsp;<strong>客户端端口不足</strong></p> <p>在进行压力测试时,客户端端口不足会导致建立连接失败。负载均衡会默认抹除TCP连接的timestamp属性,Linux协议栈的time_wait 状态连接复用无法生效,time_wait状态连接堆积导致客户端端口不足。</p> <p><strong>解决方法</strong>:客户端使用长连接代替短连接。使用RST报文断开连接,即socket设置SO_LINGER属性。</p> <p>&bull;&nbsp;&nbsp;&nbsp;<strong>后端服务器accept队列满</strong></p> <p>后端服务器accept队列满,导致后端服务器不回复syn_ack报文,客户端超时。</p> <p><strong>解决方法</strong>:默认net.core.somaxconn的值为128,执行sysctl -w net.core.somaxconn=1024命令更改net.core.somaxconn的值,并重启后端服务器上的应用。</p> <p>&bull;&nbsp;&nbsp;&nbsp;<strong>后端服务器连接过多</strong></p> <p>由于架构设计的原因,使用七层负载均衡时,用户长连接经过Nginx后变成短连接,可能导致后端服务器连接过多,从而表现为压测性能低。</p> <p>&bull;&nbsp;&nbsp;&nbsp;<strong>后端服务器依赖的应用成为瓶颈</strong></p> <p>请求经过负载均衡到达后端服务器后,后端服务器本身负载正常,但由于所有的后端服务器上的应用又依赖其它应用,例如数据库,当数据库成为瓶颈时,也会引起性能降低。</p> <p>&bull;&nbsp;&nbsp;&nbsp;<strong>后端服务器的健康检查状态异常</strong></p> <p>在压测时,容易忽略后端服务器的健康检查状态,如果有后端服务器健康检查失败或者健康检查状态经常变化,由好到坏,又由坏到好,反复变化,也会导致压测性能低。</p>
以上内容是否解决了您的问题?
请补全提交信息!
联系我们

电话咨询

400-151-8800

邮件咨询

fincloud@ocft.com

在线客服

工单支持

解决云产品相关技术问题