今天我想试一下 webman 做 api 服务的吞吐量 进程数设置为 100 已安装 event 扩展 使用环境是 windows wls2 + docker
使用 Jmeter 进行测试
首先是 一个只做 redis 数据库读写的接口
通过 Jmeter 测试结果如下
然后是是 一个只做 mysql 数据库读写的接口
通过 Jmeter 测试结果如下
这两个接口所测出的吞吐量和平均请求时长都不如我使用 AdapterMan + CI 的吞吐量和平均请求时长
(AdapterMan|论坛内关于 adapterman 的文章)
首先是 redis 数据库读写
通过 Jmeter 测试结果如下
首先是 mysql 数据库读写
通过 Jmeter 测试结果如下
下面是我的问题
我看手册首页声称 webman 非常快但我目前测试的结果来看效果并不是很好 这是我环境的原因吗(测试时均是 进程数设置为 100 已安装 event 扩展 使用环境是 windows wls2 + docker 所连接 mysql 数据库 redis 数据库是相同的)
顶一顶 静等各位大佬来解惑
补充一点 在使用 AdapterMan 后也做过一些测试 与使用fpm的CI相比 (通过 Jmeter 测试带业务API)性能提升也达不到2倍
这个性能也未达到其项目(AdapterMan)中的效果,也想请各位大佬帮忙看下是怎么回事
电脑啥配置,开了100个进程
这个进程数我在测试 webman 和 AdapterMan + CI 时设置的是相同的 我认为的话这个应该对结果差异影响不大
wls2本身性能很差,尤其是有磁盘读写的时候。因为wls2成为瓶颈,压测结果相差不是不大。
还有,进程数100感觉多了,进程数开成4倍cpu即可,进程太多性能会下降。
关于webman压测略低于AdapterMan + CI,
是因为webman用的数据库组件和CI的数据库组件性能差异导致,尤其是laravel/think-orm的Model,性能较低。
如果都用原生PDO或者同一个数据库组件,webman肯定会高于AdapterMan。
另外使用Model、 Db::table() 和原生PDO性能也有差异,之前有人压测(数据库随机查询)的对比数据。
https://www.workerman.net/a/1337
如果使用原生PDO webman QPS为1.78万
如果使用laravel的Db::table() webman QPS降到 0.94万QPS
如果使用laravel的Model webmanQPS降到 0.72万QPS
最后建议压测使用正式linux系统压测,对于不同框架间的数据库组件的那点性能差异可以忽略。
感谢回复
首先是关于 wsl2 的问题 稍后我会尝试在 debian Linux 上测试
然后是进程数 这个进程数我在测试 webman 和 AdapterMan + CI 时设置的是相同的 我认为的话这个应该对结果差异影响不大 (稍后在 debian Linux 上测试时会尝试调整为 cpu * 4)
目前我手边有一个安装了图形界面的 debian11 今天在这个上面测试后我会再回复您
我的意思是100进程对于webman和AdapterMan都有点多了,调整合适的进程他们都会有更好的表现。不是说100进程是webman QPS低于AdapterMan的原因。
webman低于AdapterMan的原因是数据库组件的性能差异导致。
大佬 我在下面贴出了我在debian上的测试结果 想请您帮忙看下 这个结果是否发挥出了 webman 应有的潜力
https://www.workerman.net/a/1337
评论区有人发过压测结果,你可以作为对比
大佬,对于tp的orm你有没有测过
cpu 为 8 核
redis 与 webman服务在同一主机 ab测试发起端与webman服务在同一内网
由于我本地部署的mysql在使用时报错(通过 dbeaver 或 其他数据库图形工具可以正常连接)
并且我一时也不知怎么解决 所以 mysql 数据库使用的是远程服务器的
用来测试的接口
无业务
ab 测试结果
带 redis
ab 测试结果
带 sql
ab 测试结果
我想请大佬帮忙看下目前这个表现的 webman 是正常的吗
https://www.workerman.net/doc/workerman/appendices/kernel-optimization.html
根据我之前的压测结果来看数据不太对。
无业务 QPS 只有8799 太不正常了,正常应该5万-20万之间。是不是用了啥中间件写磁盘了,比如webman/log。
Redis QPS也应该过万才对。
数据库读写各一次应该有几千QPS,几百也不太正常。
空業務,windows下的結果....
6核的电脑,开了24个进程,没做任何优化,图省事,debug 都没关
300万数据,随机取一条返回,24个进程也能打到1万5