全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 阿里云办公 培训与认证 物联网
负载均衡
    负载均衡性能与测试概要说明

负载均衡性能与测试概要说明

更新时间:2017-06-07 13:26:11   分享:   

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

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


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

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

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

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

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

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

 

客户端端口不足

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

解决方法:

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

  • 客户端使用长连接代替短连接进行业务访问。
  • 配置客户端通过发送RST而非FIN报文断开连接(设置SocketSO_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在大并发场景下存在问题,会存在3s6s9s阶梯式停顿的现象。另外,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. 分别创建TCPHTTP监听各一个,后端端口都设置为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. 开始压测,等待压测完毕检查压测结果即可。

 

本文导读目录
本文导读目录
以上内容是否对您有帮助?