我正在使用Redis和supervisor管理多个worker处理laravel队列任务。
我有多个numprocs,它们在某些天工作得非常完美,然后即使supervisor处于活动状态,它也会崩溃。
我有多个numprocs,它们在某些天工作得非常完美,然后即使supervisor处于活动状态,它也会崩溃。
因为在supervisor中,当supervisord失败超过配置文件中设置的startretries
值以启动程序/worker时,程序/worker将进入致命状态,然后它将不会处理任何作业,所以当所有worker都进入此状态时,supervisor就会崩溃。
然后我们需要手动重启Supervisor才能再次开始处理。
但这不是一个适当的解决方案。
我的问题是为什么supervisor无法启动,有什么解决方法?
参考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
我的标准输出日志文件看起来像这样
startretries
的值,我们需要找出为什么无法启动工作进程。 - Bibhudatta Sahooworker.log
或workerError.log
中。 可能是从MySQL中的“连接过多”到完全不同的东西。您还可以查看/var/log/daemon.log
,因为它将包含由工作进程运行的PHP进程内部的致命错误。 - cb0