【发布时间】:2018-07-11 11:12:41
【问题描述】:
我正在使用 Redis 处理 laravel 队列作业,并使用主管来管理多个工作人员。
我有不止一个 numprocs 可以完美运行几天,然后即使主管处于 活动状态,主管也会宕机。
因为在supervisor中,当supervisord失败超过配置文件中设置的startretries值以启动程序/worker然后程序/worker进入FATAL STATE然后它不会处理任何作业,所以当所有工人都进入这种状态时,主管就倒下了。
然后我们需要手动重启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
我的标准输出日志文件是这样的
【问题讨论】:
-
你能给你看主管日志文件吗?
-
嗨@Pavel 我用日志文件数据更新了我的问题。看看吧。
-
嗯,很难的问题,唯一的想法是检查失败的时刻:也许是内存的一些问题,或者其他什么。所以尝试查看其他日志(nginx、php 等)。也可能不是一个好主意,但你可以尝试增加
startretries参数。 -
我们不能只增加
startretries的值,我们需要找出它无法启动workers 的原因。 -
您需要添加通过PHP进程创建的日志。当前日志仅显示工人 106 产生了一些严重的问题并被关闭。激动人心的日志应该在
worker.log或workerError.log。它可能是从 MySQL 中的“太多连接”到完全不同的东西。你也可以看看你的/var/log/daemon.log,因为它会在你的由工人运行的 PHP 进程中包含致命错误。
标签: php laravel-5 queue supervisord