场景描述:
client(单片机) — send MQ —> MQ Server — Received —> php脚本(业务 + DB)
文字说明: 就是简单的一种MQ应用场景
问题描述:(一说到这就想骂人)
暂且80个client(听说后期5000的量), 4个PHP脚本处理进程才应付得过来。
正常情况下,消息量在 2500条/分钟左右。特殊情况下估计要翻3倍,也就是7500/分钟。
问题也就出现在特殊情况下,一旦脚本处理能力跟不上之后,基本上后面很难再更上去了,因为消息只会积累的更多。
请教:
姑且先不管描述的问题,毕竟需要优化的地方还太多。
假如不考虑接收MQ速率的影响,一条消息对应一组CURD的操作,单个php脚本在Cli下的处理能力有多快,最好能给个大概的量化值。
PHP在cli下运行,受到哪些PHP配置参数的影响
增加多个PHP脚本,肯定不可能无限增加。
重中之重:授人以鱼不如授人以渔。php进程相关的知识点哪里有好的文档
回答
不考虑IO的话,只要不写一些作死的逻辑,php的在cli的处理能力基本不需要担心不够用,但是存在IO的情况下,瓶颈大多都是在这些IO操作和等待上,不好给你的数值。
php的配置一般改动也不会太多,cli下运行主要注意下可以使用的最大内存。
增加多个php脚本是可行的,监控下CPU和内存的使用就可以了
官方文档有简要描述,但是看你的这个场景,你不考虑使用 swoole或者workerman这类异步、并行、高性能网络通信引擎吗?
参考性能:laravel队列(cli方式)+Rabbitmq,13W数据,DB业务操作,78个进程(36*2台机器),总耗时20秒
单台硬件配置:CPU:32核;内存:64G