负载均衡性能与测试概要说明__性能压测_技术运维分享_负载均衡-阿里云
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简单压测示例
- ,, ,购买两台,ECS用作后端服务器,服务器规格:, CPU 1核,内存, 512M,, CentOS 6.3 64位。
- ,购买一个负载均衡实例用于提供负载均衡服务,并绑定此前购买的,ECS作为后端服务器。
- ,分别创建,TCP、,HTTP监听各一个,后端端口都设置为,80。
- ,在前述,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
上一篇:
故障赔偿说明___相关协议_负载均衡-阿里云
下一篇:
健康检查的相关配置,是否有相对合理的推荐值?__健康检查_技术运维分享_负载均衡-阿里云
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云