微信小程序性能测试之jmeter踩坑记录(三)
2020-12-27 11:49 第二个卿老师 阅读(1362) 评论(0) 编辑 收藏 举报-----------------------------------------------------------------------------------------------------------------------------------------------------------------
线性压力测试
线性测试主要测试集群性能是否随着服务器数量呈线性增长。此次测试采用go模拟的后台程序作为接受压力的B机,分别记录了在1台,2台,4台,8台,16台ecs服务器集群下系统的总并发数(CPU负载均为70%)。
结果分析:
下面分别是1,2,4,8,16台ecs的CPU负载图和并发数:
- 1台ecs并发数为24000RPS左右,如下
- 2台ecs并发数为48000RPS左右,如下
- 4台ecs并发数为96000RPS左右,如下
- 8台ecs并发数为192000RPS左右,如下
- 16台ecs并发数为384000RPS左右,如下
由上可知,集群并发数随着集群机器数量呈线性增长。
单机压力测试
单机测试主要测试单机的并发量。发起压力的机器采用了1台跟压测中间件的A机同一规格(8核16G)的ecs,被压测的机器采用了1台同样配置的ecs。测试在单一节点下的php服务器能承受住的压力情况。为了模拟php接口需要的各种参数,这次采用了Jmeter发起压力请求。
单机空压
空压选用了业务逻辑最简单且不会操作数据库和Redis的授权接口CosAuth,以表示php服务器所能承受的最大并发请求数。下图是Jmeter的压力测试结果:
可以看到此时显示的并发数平均为3000 RPS水平。下面再来看看此并发数下php单机服务器的各项硬件指标:
由上图可知,在php单机并发数达到3000RPS的时候,服务器的CPU负载已经达到了90%左右,已接近极限水平了,故php单机的空压并发请求数为3000RPS左右。
单机其余接口压测
1,php单机登录接口(login)在服务器CPU满负载(90%~100%)下的并发数如下图所示:
可以看到php单机登录最大并发数平均为2200RPS左右。
2,php单机下单接口(addOrder)在服务器CPU满负载(90%~100%)下的并发数如下图所示:
可以看到php单机下单最大并发数平均为500RPS左右。
3,php单机登录加下单混合(login+addOrder)在服务器CPU满负载(90%~100%)下的并发数如下图所示:
可以看到php单机登录加下单混合最大并发数平均为2000RPS左右。
4,下图是php单机的登录下单混合业务场景在服务器CPU70%负载(即正常可接受范围内CPU的最大负荷)下的并发数:
可以看到php单机的登录下单混合业务场景在服务器CPU70%负载的并发数约为1500RPS。
php单机压力测试结果分析
由上文可看出,php单机的登录最大并发数为2200RPS左右,而目标登录并发数为500000RPS,故计算出至少需要500000/2200=227.27台8核的ecs服务器,共需要228*8=1824个ecs核心,才能满足需求。
考虑到如此多的ecs成本颇高并且极有可能阿里库存不足,建议将登录接口采用go进行编写和处理,而其余业务采用php进行处理。
另一方面,从上文看出php单机的下单最大并发数为500RPS左右,下单目标并发数为15000RPS,故需要15000/500=30台8核的ecs,若要是服务器在正常符合范围内工作(CPU<=70%),则需要15000/(500*70%)=42.85台ecs即可达到下单的需求。
---------------------------------------------------------------------------------------未完待续-------------------------------------------------------------------------------