工匠 cron 作业生成许多进程

aritsan crontab job generate many progcess

我使用 aritsan 命令(lavaral 5.1)处理后台作业,

我按照mamul在crontab里设置了* * * * * php /path/to/artisan schedule:run 1>> /dev/null 2>&1.

我的工作设置像

'$schedule->command('job')->cron('0 * * * *');' 

在Kernel.php

这个任务运行良好,但是当我在几个小时后检查我的服务器进程时,我发现 aritsan 生成了很多进程,

注意:在我的工作中,我在handle()方法中程序结束后写exit()。 请帮我看看为什么artisan生成那些progcess(不退出?),它占用很多内存。

非常感谢!

~ ps -aux|grep artisan|grep -v grep|wc -l  
24  

root     15690  0.0  2.3 235588 11872 ?        S    Nov16   0:05 /usr/local/bin/php artisan job  
root     16382  0.0  2.3 237748 11996 ?        S    Nov16   0:06 /usr/local/bin/php artisan job  
root     17735  0.0  2.3 237748 12036 ?        S    Nov16   0:05 /usr/local/bin/php artisan job  
root     17786  0.0  2.4 237748 12052 ?        S    Nov14   0:15 /usr/local/bin/php artisan job  
root     20274  0.0  2.4 237748 12056 ?        S    Nov14   0:14 /usr/local/bin/php artisan job  
root     23771  0.0  2.4 237748 12056 ?        S    Nov14   0:12 /usr/local/bin/php artisan job  
root     24191  0.0  2.4 237748 12056 ?        S    Nov16   0:03 /usr/local/bin/php artisan job  
root     26192  0.0  2.4 237748 12048 ?        S    Nov16   0:02 /usr/local/bin/php artisan job  
root     26287  0.0  2.4 237748 12048 ?        S    Nov14   0:12 /usr/local/bin/php artisan job  
....  

您应该尝试使用

手动执行计划任务
php /path/to/artisan schedule:run

看看需要多少时间 run.If 这需要很多时间,这意味着你在某个地方遇到了瓶颈,而且它永远不会到达你的 exit()。 您可能有一个竞争条件,多个进程请求相同 thing.You 需要找到耗时的任务并尝试优化 it.Also 您可能想使用

->withoutOverlapping();

以便不超过一项任务同时 运行。