我使用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中找到有关守护进程工作人员的更多信息.但是,这个优点带来了一个缺点 – 在部署代码时需要特别注意,并且必须处理数据库连接.通常,长时间运行的数据库连接断开连接.
总结以上是内存溢出为你收集整理的Laravel工匠队列 – 高cpu使用全部内容,希望文章能够帮你解决Laravel工匠队列 – 高cpu使用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)