代码改变世界

微信小程序性能测试之jmeter踩坑记录(四)

2020-12-27 11:58  第二个卿老师  阅读(707)  评论(0编辑  收藏  举报

接上篇:微信小程序性能测试之jmeter踩坑记录(三)

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

go单机压力测试

压测go单机时,采用了2台同规格的8核16G服务器作为发起压力的A机,A机使用Jmeter工具发起压力请求。1台同规格的8核16G服务器作为接受压力的B机。

此外,由于登录接口会使用用户code来调用腾讯的openid接口,但是目前只有几个用户code,因此无法模拟不同的用户海量登录,故此次测试采用了1台同规格的8核16G服务器作为C机来模拟腾讯openid接口以供B机的调用。测试时,B机随机生成不同的用户code发送给C机,C机再据此返回不同的openid给B机。

go单机压力测试结果

当B机达到满负载(CPU 90%~100%)时,2台A机的压力测试结果如下

A机一:

 A机二:

 

由上图可知,go登录接口的最大并发数为11000RPS左右。

go单机压力测试结果分析

go登录接口最大并发数为11000RPS,但由于此次是采用模拟腾讯接口的方式,延时会比实际低一些,若实际采用腾讯接口,换算后并发数约为9000RPS左右。所以,当服务器在正常符合范围内(CPU <= 70%)运转时,go登录单机并发数应为9000*70%=6300PRS左右。而目标登录并发数为500000RPS,故共需要500000/6300=79.36台8核ecs服务器即可达到登录的需求

压力测试结论与建议

结论1:满足当前每秒50万登录并发+每秒1.5万订单,至少需要512G以上Redis缓存和60核MySql数据库。

结论2:当前php单机性能为最大每秒处理2000请求数。

结论3:系统满足横向线性扩展。

 

建议1:如不能修改应用情况下,应至少使用250台8C16G ECS+1T版Reids+60核RDS,建议400台8C32G ECS。

建议2:修改应用,提升单机性能,如单机性能提升10倍至20000,则最少只需25台ECS。

建议3:由于php本身并不适合高并发场景,可以考虑使用其它高并发框架,如Golang的echo框架等。

 

主要内容大概是这样,从去年拖到现在总算填完了,而我基本全程都是打酱油的,现在回想起来,实际执行起来要难很多,你需要熟悉阿里云服务(快速的搭建测试环境)、编写测试组件、以及各种中间件知识,包括系统架构、网络、数据库等等,让我首次参与从服务端视角开展的性能测试,果然你知道得越多,不知道的也就越多。有兴趣的可以看看阿里巴巴 PTS 团队的性能测试分享