【问题标题】:Laravel 5.6 queue restart CPU usageLaravel 5.6 队列重启 CPU 使用率
【发布时间】:2019-02-03 23:11:29
【问题描述】:

我在共享托管服务上安装了我的 Laravel 5.6 应用程序。但是我的托管公司对我的应用程序的 CPU 使用率不满意。无论我是手动还是通过 cron 作业杀死队列工作人员,都会在杀死队列工作人员时出现这种高 CPU 使用率。 有人可以解释一下为什么这个 'php artisan queue:restart' 需要这么多 CPU 时间吗?如果可能的话,我该如何减少?

重启:

cd /home/xxxxxx/rdw_laravel/; /usr/local/bin/php72 artisan queue:restart >/dev/null 2>&1 

激活队列工作者:

cd /home/xxxxxx/rdw_laravel/; /usr/local/bin/php72 artisan queue:work --daemon

【问题讨论】:

  • 你能分享你的配置吗?你是如何启动队列的,如果 queue:worker 进程失败,你如何确保它重新启动(即你如何补充 supervisord / systemd)。
  • 我通过 CRON 安排了重启,每天 23:55 开始。 cron 命令的内容如下: cd /home/xxxxxx/rdw_laravel/; /usr/local/bin/php72 artisan queue:restart >/dev/null 2>&1 然后,3分钟后队列再次启动: cd /home/myseabou/rdw_laravel/; /usr/local/bin/php72 artisan queue:work --daemon 目标是获得将在夜间执行的作业的实际版本。通过 kernel.php 安排了大约 20 个作业。我读了一些关于需要清除内存的内容,这有效果吗?
  • 请使用编辑功能编辑您的原始帖子。还包括如何启动队列工作人员。
  • 还需要补充什么吗?
  • 所以你只有一个队列工作者,对吗?同时添加 Laravel 版本。

标签: laravel queue cpu laravel-5.6


【解决方案1】:

你似乎有内存泄漏,所以请阅读memory

直接来自关于如何运行队列工作者的文档:

守护进程队列工作人员在处理每个作业之前不会“重新启动”框架。因此,您应该在每个作业完成后释放所有繁重的资源。例如,如果您正在使用 GD 库进行图像处理,则应在完成后使用 imagedestroy 释放内存。

替代方案是使用queue:listen,不同之处在于:work 启动一次并永远运行,而:listen 在每个作业之前启动。

注意queue:workqueue:work --daemon 是相等的,因此您不必使用 --daemon 标志运行 cron。


注意:你为什么经常跑:restart?我怀疑您是否每天都更新代码,因此请仅在更新代码时使用:restart

相关

What is the difference between queue:work --daemon and queue:listen

【讨论】:

  • 感谢您的建议!。我也看到了你复制的文字,但我没有使用任何图像。因此,我寻找“如何释放变量、对象、数组等内存”。但直到现在我找不到任何合适的解决方案,至少在 Laravel 文档中没有。我希望在那里找到一些东西,否则我必须在个人基础上用 PHP 解决它。你知道我在哪里可以找到这种类型的解决方案吗?除此之外,我已经降低了重启的频率(因为我不再经常更改代码)
猜你喜欢
  • 2013-05-29
  • 1970-01-01
  • 2019-01-08
  • 2018-03-19
  • 2016-11-21
  • 2017-07-23
  • 2017-10-14
  • 2016-07-14
  • 1970-01-01
相关资源
最近更新 更多