我在Laravel中设置了队列来处理我的处理脚本.
我使用beanstalkd和supervisord.
有6种不同类型的加工管.
我使用beanstalkd和supervisord.
有6种不同类型的加工管.
问题在于,对于每个管,工匠每秒不断产卵.
工人代码似乎睡了1秒钟,然后工作线程使用7-15%的cpu,乘以6管…我想要有多个工人每管..我的cpu正在被吃掉.
我尝试将1秒钟的睡眠改为10秒.
这有助于当工作人员醒来时,每10秒钟仍然有一个巨大的cpu尖峰.
在这个时候,我甚至不处理任何事情,因为队列完全是空的,这只是工人寻找一些事情.
当我在浏览器中刷新页面,并且盘旋在10%左右的时候,我还测试了看到laravel的cpu使用情况.现在我正在一个低端机架空间实例,这样可以解释它,但仍然…工人们每次醒来时,都会举起一个筏子实例.
有没有办法解决这个问题?我只需要把一大笔钱投入更昂贵的服务器,才能听到工作是否准备好了吗?
编辑:
找到一个解决方案…它是不使用手工队列:侦听器或队列:工作
我查看了队列代码,似乎并没有解决这个问题的方法,每次工作人员检查更多的工作时,需要加载.
相反,我用自己的听众写了自己的听众.
我仍然使用laravel将东西推入队列,然后我的自定义侦听器解析队列数据,然后触发一个手工命令运行.