阅读531 返回首页    go 阿里云 go 技术社区[云栖]


负载均衡性能与测试概要说明__性能压测_技术运维分享_负载均衡-阿里云

1、负载均衡性能相关配置说明
2、为何7层比4层服务性能低

3、负载均衡性能测试操作指导


1. ,负载均衡性能相关配置说明

,当前架构下与负载均衡性能相关的配置说明如下:

  • ,负载均衡通过共享千兆网络与后端,ECS进行数据交互。
  • ,单个监听公网带宽峰值,1Gbps 。
  • ,单个监听私网带宽峰值,1Gbps 。
  • ,HTTP-,会话保持,-Cookie超时时间默认,3600毫秒,最高,86400秒。
  • ,TCP-,会话保持,-超时时间默认,1000毫秒,最高,86400秒。
  • ,单个,key的,API访问频率限制。
  • ,不同类型协议服务等待后端响应的超时时间:
    • ,TCP: 900,秒
    • ,UDP: 300,秒
    • ,HTTP: 60,秒
    • ,HTTPS,:,60秒

,2. 为何,7层比,4层服务性能低

,负载均衡集群底层采用,LVS(,4层)和,Tengine(,7层)实现。其中,4层监听经过,LVS后直接到达后端服务器;而,7层监听经过,LVS后,还需要再经过,Tengine,最后达到后端服务器。所以,7层比,4层多了一个处理环节,导致,7层性能没有,4层性能好。

,另外,除了,7层服务自身架构导致比,4层性能低外。如下场景也可能导致,7层服务性能不高。

 

,客户端端口不足

,该场景尤其容易发生在大并发访问时(比如压测)。负载均衡默认会移除,TCP连接的,timestamp属性,导致,Linux协议栈的,tw_reuse(,TIME_WAIT状态连接复用)无法生效,进而引起,TIME_WAIT状态连接堆积并最终导致客户端端口不足。客户端端口不足会导致建立连接失败。

,解决方法:

,可以通过如下两种手段来规避该问题:

  • ,客户端使用长连接代替短连接进行业务访问。
  • ,配置客户端通过发送,RST而非,FIN报文断开连接(设置,Socket的,SO_LINGER属性),避免产生,TIME_WAIT状态连接。

后端Linux ECS服务器accept队列满

,负载均衡后端,Linux ECS服务器的,accept队列满,导致后端服务器无法回复,SYN ACK报文进行正确响应,最终导致客户端连接超时。

,解决方法:

,Linux,默认的核心参数,net.core.somaxconn值为,128,执行如下指令将其调整成,1024或更大值并重启服务器上的应用生效:

,sysctl -w net.core.somaxconn=<1024>

 

,后端服务器连接过多

 

,由于架构设计的原因,使用,7层负载均衡服务时,用户长连接经过,Tengine后会转为短连接。这可能会导致后端服务器连接过多,进而影响压测性能。

 

,后端服务器所依赖的应用成为瓶颈

 

,请求经过负载均衡达到后端服务器后,后端服务器本身负载都正常。但由于后端服务器上的应用又依赖其它应用(比如数据库等),那么被依赖应用的性能也可能会成为压测瓶颈。

 

,后端,ECS健康检查状态异常

 

,如果有后端,ECS健康检查失败,或者由于业务不稳定导致健康检查状态频繁切换(好到坏,又从坏到好,反复变化),也会影响最终的压测性能。

,3. 负载均衡性能测试操作指导

,基于前述因素,建议用户在负载均衡性能测试时关注如下要点:

 

,注意事项

 

  • ,压测负载均衡转发能力,建议使用短连接
    ,一般来说压测除了验证会话保持,均衡性等功能外,主要验证的是负载均衡的转发能力,因此建议使用短链接,,用于测试负载均衡和后端服务器处理能力。但使用短连接测试时需要注意上述客户端端口不足问题。
  • ,压测负载均衡吞吐量建议使用长连接,用于测试带宽上限或特殊业务。
  • ,压测工具的超时时间建议不要设置过大(,5秒之内)。超时时间过大的话,测试结果会体现在平均,RT加长,不利于判断是否已到达压测水位。超时时间调小,测试结果会体现在成功率上,便于快速判断压测水位。
  • ,后端服务器提供一个静态网页用于压测,以避免应用逻辑带来的损耗(,I/O, DB等)。

 压测工具建议

,不建议使用,Apache ab进行压测,因为,ab在大并发场景下存在问题,会存在,3s,,6s,,9s阶梯式停顿的现象。另外,,ab会通过判断,content length来确定请求成败,在负载均衡挂载多台后端服务器的时候,返回的,content length不一致,会干扰测试结果。

,建议使用阿里云,PTS (,,https://pts.aliyun.com,),进行压测。可以选择多个,Client作为压测源,测试结果清晰,并且可以通过配置监控,获取压测时后端服务器的性能数据。

 

,建议压测配置

 

,压测负载均衡能力时建议进行如下配置:

  • ,监听不开启会话保持功能,否则压测源较少时压力可能会集中到后端个别服务器。
  • ,监听关闭健康检查功能,减少健康检查请求对后端服务器的影响。
  • ,用多个,client(>5)进行压测,源,IP分散,能够更好的模拟线上实际情况。

,注,:上述设置仅用于负载均衡能力测试,用户生产环境压测还需根据实际需求进行配置。

 

,使用,PTS简单压测示例

 

  1. ,, ,购买两台,ECS用作后端服务器,服务器规格:, CPU 1核,内存, 512M,, CentOS 6.3 64位。
  2. ,购买一个负载均衡实例用于提供负载均衡服务,并绑定此前购买的,ECS作为后端服务器。
  3. ,分别创建,TCP、,HTTP监听各一个,后端端口都设置为,80。
  4. ,在前述,ECS上都安装,apache web server,用于提供,web服务,并设置默认首页为,index.html后启动服务。

yum install -y httpd echo "testvm" > /var/www/html/index.html service httpd start

 

,      5. 访问本机,80端口,确认,web服务可用:, curl localhost

      6. 在PTS中创建测试脚本, 注意关闭长连接和设置超时时间:

  • ,超时时间,5秒:, PTS.HttpUtilities.setTimeout(5000)
  • ,关闭长连接 :,PTS.HttpUtilities.setKeepAlive(False)

,       7. 开始压测,等待压测完毕检查压测结果即可。

 

最后更新:2016-07-12 13:21:11

  上一篇:go 故障赔偿说明___相关协议_负载均衡-阿里云
  下一篇:go 健康检查的相关配置,是否有相对合理的推荐值?__健康检查_技术运维分享_负载均衡-阿里云