一直好奇webman到底有多快,今天测了一下,分享给大家,顺便想问webman你们部署docker的方案是什么?

lavaman

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,这个应该是数据库的瓶颈了。

这里说结论

无数据库操作:webmann性能是tp6的120倍

数据库单条find查询:webman+illuminate/database 是tp6的80倍

就算不做缓存,不优化数据库,配置稍微好点的云端mysql也能满足基本业务了。
  纯文字输出的rps平均值,TP6是50+ | tp6+worker插件是1k慢降到120|webman是6k
  链接数据库单条有索引find主键的rps tp6是50+ | webman是4k

不想引战,laravel和tp6性能差不多,这次没测,之前测过。lumen也差不多。

分享结束
想问个问题,云端docker部署tp和laravel时 cpu狂飙,官方镜像还是我自己的都一样,nginx php mysql各自都用docker的情况下,通过不同端口映射相互访问,低配的阿里云ECS,CPU经常跑到80%,vscode远程插件都会卡死,PHP改成原生,nginx和mysql还用docker,CPU就会降到10%一下,无奈放弃docker生产环境。想问问大家怎么搞的docker云端? 小项目比较多,PHP版本要求差不多,怎么灵活管理比较方便?
  

1992 10 0
10个回答

nitron

一个是面包车,一个是装了赛车引擎的面包车,一个是专门的赛车,结论不是显而易见么

liziyu

laravel和tp6性能差不多
实际上 TP6比Laravel响应上要快不少的,3倍左右。

  • Tinywan 2022-04-05

  • lavaman 2022-04-07

    对,只不过在我眼里,这三个都是一个级别,和webman完全不是一个级别。所以就没提了。

人民资本家

你猜为什么七八次后QPS掉到一百多,因为有内存泄漏捏🤗🤗🤗

  • lavaman 2022-04-07

    难怪。

  • holly188 2022-04-18

    think-workerman,严重怀疑是,我还专程去读源码,看起来一切都是顺顺当当的(从封装的各种方法流程来看),看不出哪里还会有这种可能性

tanhongbin

只能说webman,谁用谁知道呀

  • 暂无评论
10bang

必须给力啊

  • 暂无评论
只会PHP

php think run是启动php内置web服务器,这是单进程模式把,不建议生产环境使用,性能应该比fpm+nginx差很多,建议测试一下fpm+nginx下的性能

  • lavaman 2022-04-08

    生产环境肯定Nginx啊。没用nginx+fpm测试就是因为Fpm没办法只开一个进程,fpm在windows下面太容易崩了。而且多fpm和单进程webman比较没有意义。

  • Tinywan 2022-04-09

    确实,不是一个数量级。比较无意义

黑小马

应该在Linux下开event才能显示差异

  • lavaman 2022-04-08

    我只是随意测试一下,并没有严谨的去做细节上的比较,毕竟不同的业务场景没办法都测出来,只要测试总时长超过1秒,能得出rps的直观比较就行了。

six

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/

  • lavaman 2022-04-08

    并不是测峰值,只要环境相同,比较出来差异就行了,并不是太别严谨,有个直观印象就行了。不同配置在不同 -n参数下表现是不同的,只要测试总时长超过一秒,得出的rps方便比较就可以了。 6核12芯当然是开玩笑的,我没用nginx+fpm测试tp就是一个原因,因为我本地fpm是脚本自动守护四个进程,这样不公平,单开一个fpm进程没办法测试,因为fpm在windows下太容易挂掉了。

咸鱼.php

Great
挺好的,有个参照,可以再来一个严格的测试😁😁😁😁

  • 暂无评论
ljnchn

单机很高,上线后发现也就几百,开始不明白咋回事,后来才想明白,几兆的小水管,再快也快不起来😂

  • tanhongbin 26天前

    这个是真的没啥办法,我们也是,问我为啥感觉没有本地测试高,我给这么形容的,门就那么大点,来800万人都得在哪里等着进不来。门太小了

  • liziyu 26天前

    云主机的话设置成“按量计费”应该不会出现此问题吧?!

  • ljnchn 26天前

    国外很多是按照流量算的,国内都是按照带宽

  • dignfei 24天前

    国内奸商垄断

  • lavaman 8天前

    国内的服务器也可以支持按流量计算呀,我都是按流量计算的,小项目省钱得很。

🔝