ps:
做一下补充,几个朋友说的对,这个其实不严谨,不过关于-n这个参数问题我单独说一下,我自己测试了好几次不同参数,这里的100也是故意用的低数,按照三体的说法,这也算是非饱和式测试了,不容易受到硬件设备影响。只要总时长超过1秒,能简单对比rps值就可以了。 不同硬件条件 -n参数不同表现也会不同。
关于Nginx+fpm问题:tp平时虽然都是配合Nginx使用,但是fpm这货在windows下如果只用一个线程太容易崩了,以至于我平时开发还要专门要跑个脚本检测fpm数量。多个fpm来测试tp和web比较就没有意义了。所以才用php think来测试。linux环境家里懒得弄了,毕竟经常还要玩游戏。
简单的hello world 测试 最后上结论
环境:
CPU AMD 3600是6核12芯
内存 3200频率8G*2
PHP 8.1.4(x64)
tp6
运行命令 php think run
测试命令 ab -c 10 -n 100 http://127.0.0.1:8000/ 多次 平均55 最高60
tp6 + workerman 插件
运行命令 php think worker
测试命令 ab -c 10 -n 100 http://127.0.0.1:2346/ 多次
这个不稳定 第一次1K 然后一直往下掉。 最高只有第一次1K
七八次以后,rps掉到100多
webman 1.3.4
运行命令 php start.php start
测试命令 ab -c 10 -n 100 http://127.0.0.1:8000/ 多次 平均6K多
调了一次参数 -n 变成 200 rps 平均12k 前两个没测-n 200 估计也会多一些 毕竟我是6核12芯开玩笑的- -d不同硬件条件 -n参数不同表现也会不同,并不是越高越能代表测试结果。
把输出 123改为 find(1)一条数据, rps降到4k,这个应该是数据库的瓶颈了。
就算不做缓存,不优化数据库,配置稍微好点的云端mysql也能满足基本业务了。
纯文字输出的rps平均值,TP6是50+ | tp6+worker插件是1k慢降到120|webman是6k
链接数据库单条有索引find主键的rps tp6是50+ | webman是4k
分享结束
想问个问题,云端docker部署tp和laravel时 cpu狂飙,官方镜像还是我自己的都一样,nginx php mysql各自都用docker的情况下,通过不同端口映射相互访问,低配的阿里云ECS,CPU经常跑到80%,vscode远程插件都会卡死,PHP改成原生,nginx和mysql还用docker,CPU就会降到10%一下,无奈放弃docker生产环境。想问问大家怎么搞的docker云端? 小项目比较多,PHP版本要求差不多,怎么灵活管理比较方便?
一个是面包车,一个是装了赛车引擎的面包车,一个是专门的赛车,结论不是显而易见么
嗯?贴切!
你竟然说webman是面包车。。。。
哥哥你好好审题
webman应该说是赛车引擎+一大堆零部件
laravel和tp6性能差不多
。实际上 TP6比Laravel响应上要快不少的,3倍左右。
是
对,只不过在我眼里,这三个都是一个级别,和webman完全不是一个级别。所以就没提了。
你猜为什么七八次后QPS掉到一百多,因为有内存泄漏捏🤗🤗🤗
难怪。
think-workerman,严重怀疑是,我还专程去读源码,看起来一切都是顺顺当当的(从封装的各种方法流程来看),看不出哪里还会有这种可能性
只能说webman,谁用谁知道呀
必须给力啊
php think run是启动php内置web服务器,这是单进程模式把,不建议生产环境使用,性能应该比fpm+nginx差很多,建议测试一下fpm+nginx下的性能
生产环境肯定Nginx啊。没用nginx+fpm测试就是因为Fpm没办法只开一个进程,fpm在windows下面太容易崩了。而且多fpm和单进程webman比较没有意义。
确实,不是一个数量级。比较无意义
应该在Linux下开event才能显示差异
我只是随意测试一下,并没有严谨的去做细节上的比较,毕竟不同的业务场景没办法都测出来,只要测试总时长超过1秒,能得出rps的直观比较就行了。
windows下webman是单进程的,你的6核12芯只用了1核1芯。如果是linux下webman开多进程,性能会更好。同样的 php think run 也是单进程的,tp应该用nginx + fpm测试。
还有你压测的是短连接,现在http都是长连接了,压测应该加上 -k 参数。-n100 太少了,怎么也得100000啊。正确的压测参数应该类似
ab -n100000 -c200 -k http://127.0.0.1:8787/
并不是测峰值,只要环境相同,比较出来差异就行了,并不是太别严谨,有个直观印象就行了。不同配置在不同 -n参数下表现是不同的,只要测试总时长超过一秒,得出的rps方便比较就可以了。 6核12芯当然是开玩笑的,我没用nginx+fpm测试tp就是一个原因,因为我本地fpm是脚本自动守护四个进程,这样不公平,单开一个fpm进程没办法测试,因为fpm在windows下太容易挂掉了。
Great
挺好的,有个参照,可以再来一个严格的测试😁😁😁😁
单机很高,上线后发现也就几百,开始不明白咋回事,后来才想明白,几兆的小水管,再快也快不起来😂
这个是真的没啥办法,我们也是,问我为啥感觉没有本地测试高,我给这么形容的,门就那么大点,来800万人都得在哪里等着进不来。门太小了
云主机的话设置成“按量计费”应该不会出现此问题吧?!
国外很多是按照流量算的,国内都是按照带宽
国内奸商垄断
国内的服务器也可以支持按流量计算呀,我都是按流量计算的,小项目省钱得很。
@lavaman 你网站域名是啥,我去压测你网站,给你流量干没