Laravel工匠队列 – 高cpu使用

Laravel工匠队列 – 高cpu使用,第1张

概述我在Laravel中设置了队列来处理我的处理脚本. 我使用beanstalkd和supervisord. 有6种不同类型的加工管. 问题在于,对于每个管,工匠每秒不断产卵. 工人代码似乎睡了1秒钟,然后工作线程使用7-15%的CPU,乘以6管…我想要有多个工人每管..我的cpu正在被吃掉. 我尝试将1秒钟的睡眠改为10秒. 这有助于当工作人员醒来时,每10秒钟仍然有一个巨大的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中找到有关守护进程工作人员的更多信息.

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

总结

以上是内存溢出为你收集整理的Laravel工匠队列 – 高cpu使用全部内容,希望文章能够帮你解决Laravel工匠队列 – 高cpu使用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1048790.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存