应用型负载均衡ALB(Application Load Balancer )具备超强弹性及大规模应用层流量处理能力。本文旨在提供ALB压测方法,以及压测中遇到的常见问题和解决方案。
压测拓扑
下图为您介绍ALB压测拓扑流程。
压测方法
压测指标说明
ALB有四个关键指标:新建连接数、并发连接数和处理数据量(请求和响应)、每秒请求数。每一个指标的压测方法不一样。
-
压测ALB新建连接数指标建议使用短连接,用于测试ALB与后端服务器的新建处理能力。建议使用简单的心跳服务测试,减少过多的带宽消耗带来的影响。使用短连接测试时,需要注意客户端端口不足的问题。
-
压测ALB并发连接数指标建议使用长连接,用于测试ALB与后端服务器的并发处理能力。每一条长连接建议使用简单的心跳服务测试,起到保活会话的作用。使用长连接测试高并发能力时,同样需要注意客户端端口不足的问题。
-
压测ALB处理数据量建议使用长连接,用于测试带宽上限或特殊业务。压测工具的超时时间建议设置一个较小值,如5秒。因为超时时间太大,测试结果显示平均响应时间加长,导致不利于判断是否已经到达压测水位。超时时间调小,测试结果会体现在成功率上,便于快速判断压测水位。
-
压测ALB每秒请求数,用于测试ALB与后端服务器的请求处理能力。可以选择HTTP短连接、HTTP长连接、HTTPS短连接、HTTPS长连接进行测试。
服务器组配置建议
压测时,建议关闭健康检查功能,减少健康检查对后端服务器的访问请求。
压测工具
使用PTS简单压测示例
创建一个ALB实例,并为该ALB实例添加一个HTTP 80监听和HTTPS 443监听,HTTP监听和HTTPS监听均添加了两台ECS实例作为后端服务器,后端端口均设置为80。ECS服务器的配置为CPU 1核,内存512 MB且使用CentOS 6.3 64位的操作系统。分别登录这两台ECS实例,执行以下步骤完成压测。关于如何登录ECS,请参见连接方式概述。
-
执行以下命令,安装Apache Web Server提供Web服务。
sudo yum install -y httpd
-
执行以下命令,初始化默认首页index.html。
sudo echo "testvm" > /var/www/html/index.html
-
执行以下命令,启动HTTP服务。
sudo service httpd start
-
根据场景,执行以下命令,访问本地的80或443端口,确认Web服务可用。
-
HTTP监听使用以下命令:
sudo curl localhost
或
sudo curl 127.0.0.1
-
HTTPS监听使用以下命令:
sudo curl localhost:443
或
sudo curl -k 127.0.0.1:443
-
-
在PTS中创建测试场景,开始压力测试。具体操作请参见如何在一分钟内发起压测?。
可能导致压测性能低的原因
若发现压测性能低,可能是以下原因造成的:
-
客户端端口不足
在进行压力测试时,客户端端口不足会导致连接建立失败。
解决方法:客户端使用长连接代替短连接。使用RST报文断开连接,即socket设置SO_LINGER属性。
-
后端服务器accept队列满
后端服务器accept队列满,导致后端服务器不回复syn_ack报文,客户端超时。
解决方法:默认net.core.somaxconn的值为128,执行sysctl -w net.core.somaxconn=1024命令更改net.core.somaxconn的值,并重启后端服务器上的应用。
-
后端服务器依赖的应用成为瓶颈
请求经过负载均衡到达后端服务器后,后端服务器本身负载正常,但由于所有后端服务器上的应用又依赖其它应用,例如数据库,当数据库成为瓶颈时,也会引起性能降低。
解决方法:根据实际情况清理后端服务器上不需要的应用。
-
后端服务器的健康检查状态异常
在压测时,容易忽略后端服务器的健康检查状态,如果有后端服务器健康检查失败或者健康检查状态经常跳跃(成功到失败,又从失败到成功,反复变化),也会导致压测性能低。
解决方法:建议关闭健康检查功能,减少健康检查对后端服务器的访问请求。
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/170193.html