-----------------------------------------------------------------------------------------------------------------------------------------------------------------
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框架等。
标签:登录,单机,微信,接口,并发,测试,go,jmeter
来源: https://www.cnblogs.com/qgc1995/p/14111165.html