为什么主管要开始计划?

时间:2018-02-01 07:31:23

标签: php queue laravel-5.2 supervisord supervisor

我正在使用Redis进行laravel队列作业,并使用主管来管理多个工作人员 我有一个以上的numprocs工作了好几天,然后主管下降即使主管处于活跃状态

因为在主管中,当supervisord在配置文件中设置的值超过startretries以启动程序/工作程序时,程序/工作人员会转到致命状态然后它将不会处理任何作业因此,当所有工人都处于这种状态时,主管就会失败。 然后我们需要手动重启Supervisor再次开始处理。

但这不适合解决这个问题 我的问题是为什么主管无法启动,解决方案是什么? 参考主管文件: - http://supervisord.org/subprocess.html
我的配置文件是这样的: -

[program:name]
process_name=%(program_name)s_%(process_num)02d
command=php /path/artisan queue:work --queue=queue1,queue2,queue3,queue4,default --tries=1 --daemon
autostart=true
autorestart=true
startretries=15
numprocs=150
user=root
redirect_stderr=true
stdout_logfile=/path/worker.log
stderr_logfile=/path/workerError.log

更新
我的日志文件看起来像这样 enter image description here

我的stdout日志文件看起来像这样

enter image description here 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

相关日志条目为:

 exited: laravelw_106 (exit status 0; not expected)
gave up: laravelw_106 entered FATAL state, ntoo many start retries too quickly

laravel队列工作程序在启动后会因某种原因立即停止。 队列工作者应该是长时间运行的。

你需要找出它退出的原因;也许你在工作的某个地方有exit()die()陈述。

答案 1 :(得分:1)

您的消费者/工人在创业后很快就会死亡。消费者应该是在无限循环中运行的进程,等待任务/消息。你说任务完成后你有一个return(),也许这就是停止了工人。

尝试手动运行worker,然后在队列上生成消息。只完成一项任务后,工人不应该停止。