-----------------------------------------------------------------------------------------------------------------------------------------------------------------
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机一:
![9e92f6f15c624b28cb695078118ee01a.png](https://img.php1.cn/3cd4a/1eebe/cd5/45a090220e38e09d.webp)
A机二:
![cf201dfe3bf72630e15a426affecc51c.png](https://img.php1.cn/3cd4a/1eebe/cd5/8170a21e8dddfd22.webp)
由上图可知,go登录接口的最大并发数为11000RPS左右。
go单机压力测试结果分析
go登录接口最大并发数为11000RPS&#xff0c;但由于此次是采用模拟腾讯接口的方式&#xff0c;延时会比实际低一些&#xff0c;若实际采用腾讯接口&#xff0c;换算后并发数约为9000RPS左右。所以&#xff0c;当服务器在正常符合范围内(CPU <&#61; 70%)运转时&#xff0c;go登录单机并发数应为9000*70%&#61;6300PRS左右。而目标登录并发数为500000RPS&#xff0c;故共需要500000/6300&#61;79.36台8核ecs服务器即可达到登录的需求。
压力测试结论与建议
结论1&#xff1a;满足当前每秒50万登录并发&#43;每秒1.5万订单&#xff0c;至少需要512G以上Redis缓存和60核MySql数据库。
结论2&#xff1a;当前php单机性能为最大每秒处理2000请求数。
结论3&#xff1a;系统满足横向线性扩展。
建议1&#xff1a;如不能修改应用情况下&#xff0c;应至少使用250台8C16G ECS&#43;1T版Reids&#43;60核RDS&#xff0c;建议400台8C32G ECS。
建议2&#xff1a;修改应用&#xff0c;提升单机性能&#xff0c;如单机性能提升10倍至20000&#xff0c;则最少只需25台ECS。
建议3&#xff1a;由于php本身并不适合高并发场景&#xff0c;可以考虑使用其它高并发框架&#xff0c;如Golang的echo框架等。
标签&#xff1a;登录,单机,微信,接口,并发,测试,go,jmeter
来源&#xff1a; https://www.cnblogs.com/qgc1995/p/14111165.html