Laravel工匠队列 – 高cpu使用

前端之家收集整理的这篇文章主要介绍了Laravel工匠队列 – 高cpu使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在Laravel中设置了队列来处理我的处理脚本.
我使用beanstalkd和supervisord.
有6种不同类型的加工管.

问题在于,对于每个管,工匠每秒不断产卵.
工人代码似乎睡了1秒钟,然后工作线程使用7-15%的cpu,乘以6管…我想要有多个工人每管..我的cpu正在被吃掉.

我尝试将1秒钟的睡眠改为10秒.
这有助于当工作人员醒来时,每10秒钟仍然有一个巨大的cpu尖峰.
在这个时候,我甚至不处理任何事情,因为队列完全是空的,这只是工人寻找一些事情.

当我在浏览器中刷新页面,并且盘旋在10%左右的时候,我还测试了看到laravel的cpu使用情况.现在我正在一个低端机架空间实例,这样可以解释它,但仍然…工人们每次醒来时,都会举起一个筏子实例.

有没有办法解决这个问题?我只需要把一大笔钱投入更昂贵的服务器,才能听到工作是否准备好了吗?

编辑:

找到一个解决方案…它是不使用手工队列:侦听器或队列:工作
我查看了队列代码,似乎并没有解决这个问题的方法,每次工作人员检查更多的工作时,需要加载.

相反,我用自己的听众写了自己的听众.
我仍然使用laravel将东西推入队列,然后我的自定义侦听器解析队列数据,然后触发一个手工命令运行.

现在我的cpu用于我的听众是在%0,我的cpu现在出现的唯一的时间是它实际上找到工作,然后触发该命令,我很好.

解决方法

cpu的问题是因为工作人员在每次检查队列中的作业时加载完整的框架.在laravel 4.2中,可以使用PHP工匠队列:work –daemon.这将加载框架一次,并且工作的检查/处理发生在一个while循环内,这让cpu呼吸容易.您可以在官方文档: http://laravel.com/docs/queues#daemon-queue-worker中找到有关守护进程工作人员的更多信息.

但是,这个优点带来了一个缺点 – 在部署代码时需要特别注意,并且必须处理数据库连接.通常,长时间运行的数据库连接断开连接.

猜你在找的Linux相关文章