本人是菜鸟,因为这段时间学习了golang,开始使用beego做web项目,但是突然出现了一个流程思路:如果我开始一个新的项目,我应该选择gobee还是laravel+swoole?所以我想比较一下两者哪个更好。场景是在单台服务器的情况下选择一个场景。在相同条件下的寻呼请求压力下,两者中哪一个能够承载更多的请求。**php7.3+mysql5.7+swoole(hhxsv5/laravel-s)+laravel6.2golang1.13+beego**数据表有9个字段,数量15w,每次随机查询10条数据.验证问题如下:nolaravelblessedbyswoole和laraveladdedwithswoole性能差距比较大。另外,laravel和beego用swoole的差距有多大?为了找到这两个问题的答案,我做了一些实验和结论。如有问题请指出:测试工具为:8G内存4核一台5M云服务器apache-jMeter贴出以下我实验数据的执行结果,均为jmeter执行结果,执行5次,每次4000个请求,简单的laravel6.2应用,4000个同时请求的情况下:1:耗时1min22s,成功1145次,其余5022:耗时1min20s,成功1120次,剩余5023:耗时1min15s,成功1159次,其余5024:耗时1min21s,1144次成功,其余5025:耗时1min30s,1319本次成功,其余502==>如果使用postman制作单个请求,平均时间在256ms-280ms之间徘徊laravel6.2+swoole4000并发请求情况下:1:耗时1min43s,1268次成功,rest5022:耗时1min10s,成功1249次,rest5023:耗时1min10s,1263successes,therest5024:用了1min08s,104次成功,剩下的504(5200swoole的端口处于CLOSE_WAIT和FIN_WAIT两种状态2)5:耗时1min12s,成功519次,剩余504次,端口状态与第4次相同==>如果使用postman单次请求,平均时间在180-206ms之间徘徊===============================================其实之前刚开始接触swoole的时候,一直觉得swooleforlaravel的提升特别显着,因为之前的数据库都不大,只有几千条,但是如果量大ofdata达到了10w的水平,没觉得提升特别显着,不过看上面的测试,好像还是不上swoole比较好。接下来就是测试beego了。同样场景下,性能如何?4000个并发请求关闭nginx时:1:耗时36s,成功3986次,其余返回This(非HTTP响应码)2:耗时26s,成功3615次,其余同理如上3:耗时30s,成功3979次,其余同上4:耗时30s,3657次成功,其余同上5:耗时23s,3565次成功,其余同上==>如果使用postman单次请求,平均时间徘徊在180ms-201ms之间这是一个纯beego的测试结果,来的时候玩的有点上瘾,于是尝试了另一种方式,用nginx接收,转发给beego处理,是否可以改进?nginx+beego1:耗时35s,3989次成功,其余为返回This(非HTTP响应码)2:耗时26s,3971次成功,其余同上3:耗时30s,3979次成功,其余同上4:耗时23s,3989次成功,其余同上5:耗时27s,3626次成功,其余同上(不知道为什么最后一个突然掉了这么多)==>如果用postman单次请求,平均时间徘徊在190ms-221ms之间根据这些实验数据,回答我上面的两个问题:swoole可以提升larvel,但是如果数数据表超过10万,提升效果不明显,如果运行不好,可能会比没有swoole性能好第二个问题,光看实验数据,差距真的很大。感觉可以把学习重心转移到golang上,也给一些和我一样迷茫的人一些参考。
