Laravel队列:工作正在消耗我所有的内存
我在Laravel 5.4中遇到了一个问题,我希望有人能帮助我。我有一个laravel 5.4项目,我使用queue发送电子邮件,并执行各种命令,如下所示:Laravel队列:工作正在消耗我所有的内存,laravel,Laravel,我在Laravel 5.4中遇到了一个问题,我希望有人能帮助我。我有一个laravel 5.4项目,我使用queue发送电子邮件,并执行各种命令,如下所示: 1. Kernel.php protected function schedule(Schedule $schedule) { // $schedule->command('inspire') // ->hourly(); $schedule->command('queue:w
1. Kernel.php
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')
// ->hourly();
$schedule->command('queue:work')->everyMinute();
// Execute command at midnight daily to reject expired applications
$schedule->command('application:reject')->daily();
}
*****bob cd/opt/lampp/htdocs/oap/&/usr/local/bin/php artisan计划:运行>>/dev/null 2>&1
*****bob cd/opt/lampp/htdocs/ims/&/usr/local/bin/php artisan计划:运行>>/dev/null 2>&1
当我查看linux系统监视器时,我注意到每分钟都会启动一个新的php进程,占用13.8MB的内存。大约一个小时后,我开始发现我的空闲内存很低。这些过程是/opt/lampp/bin/php-7.1.4 artisan queue:work
和/usr/local/bin/php artisan schedule:run
当发生上述情况时,我将运行artisan queue:restart
,所有php进程都将被终止
这可能是什么原因
这对我来说很奇怪,因为我在Laravel5.1中有相同的代码,我没有经历过这种情况。我能做些什么来解决这个问题呢?您的问题是您正在用代码调度一些命令 代码中的某种调度每分钟都在调度。(: 在5.1中,它之所以能够工作是因为有两个命令:
queue:listen
可以长时间工作,而queue:work
可以一直工作到队列为空
似乎laravel团队要删除queue:listen
这就是解决方案:
1) 只需从Kernel.php
中删除您的代码,并将其安排为正常的artisan调用:
# daily
0 0 * * * bob cd /opt/lampp/htdocs/ims/ && /usr/local/bin/php artisan application:reject >> /dev/null 2>&1
2) 手动运行或监督队列:与主管一起工作
:
cd /opt/lampp/htdocs/oap/ && nohup php artisan queue:work &
队列工作者是一个守护进程,它将保持轮询。停止使用cron运行队列工作程序。它们是长期存在的进程,您可以根据服务器上的需求运行worker,而不是每分钟生成一个新的worker
阅读文档。如果您不太熟悉,那么只需安装
Supervisor
,让它处理所有工作。请咨询:ps-ax | grep artisan
如果有许多流程,那么请使用Supervisor Hi@num8er。有很多过程。好的,我现在正在写答案。这是简单的答案。切勿在cron中运行队列工作程序。创建一个安装程序,以便在启动服务器时运行一个或多个辅助进程。确保他们死后重生,否则你的队列将无法处理。因此,为了简化所有这些,有主管
。嗨@sandesh。谢谢你的意见。我正在配置一个监管者,请阅读答案中链接的文档。queue:work
命令生成一个工作进程,这是一个长寿命的进程。即使他将日程改为每天,他也会在2个月内有60名员工,在3个月内有90名员工。队列工作人员不应该这样运行,除非你想无缘无故地继续繁殖工作人员并占用你的内存。@Sandeesh我知道,我正在重写我的答案。我原以为还有queue:listen
和以前一样,但现在好像变了。这是两个不同的命令<代码>队列:侦听-侦听给定的队列队列:工作-开始作为守护进程处理队列上的作业
。我刚在本地的laravel安装中检查过。出于某种原因,他们从文档中删除了它,这很奇怪。嗨,num8er,谢谢你的解释。我现在明白为什么在5.1中工作了。我已经实施了@Sandeesh提议的主管,并且正在运行