参考 laravel 官方文档,队列驱动使用 beanstalkd , supervisor 监控队列进程,但是运行一段时间之后, queue:work 的进程显示还在运行中,但是已经不处理队列了,剩余队列一直不处理,也没有报错信息,重启 supervisor 或者 queue:work 进程后,又正常,不过运行一段时间后,还是会停止,队列命令是:
php artisan queue:work --sleep=3 --tries=1 --memory=512 --daemon
有没有大神知道是什么原因造成的?
1
ichou 2016-10-05 16:54:57 +08:00 1
看描述 应该是队列卡住了,你的队列任务可能由于某些原因僵死了,导致一直占用着进程不会退出
|
2
tiseheaini 2016-10-06 00:06:56 +08:00 1
不清楚 “一段时间” 是多长时间,期间有没有部署过代码
部署过代码需要 重启 php artisan queue:restart 目前能想到的可能是部署过代码 |
3
copyrenzhe OP @ichou 我也是这么猜测的,但是现在不知道为什么会僵死,有这方面的经验吗?
|
4
copyrenzhe OP @tiseheaini “一段时间”有时是一两天,有时是几个小时,不定。期间没有重新部署代码
|
5
tiseheaini 2016-10-06 00:47:12 +08:00 1
@copyrenzhe 贴一下 supervisor 的配置看看,这样的问题也没有遇到过
|
6
copyrenzhe OP @tiseheaini
[program:worker] process_name=%(program_name)s_%(process_num)02d command=php /var/www/html/novel/artisan queue:work --sleep=3 --tries=1 --memory=512 --daemon autostart=true autorestart=true user=root numprocs=2 redirect_stderr=true stdout_logfile=/var/www/html/novel/storage/logs/queue-worker.log |
7
dlllcs 2016-10-06 17:05:06 +08:00 1
有没有可能是某个任务进入死循环了?
|
8
takashiki 2016-10-07 19:02:58 +08:00
有打出日志看看么,如果用 mysql 作为驱动也会因为 lost connection 而报错的
|
9
copyrenzhe OP @takashiki 日志看过了,没有报错信息,队列驱动用的 beanstalkd
|
10
copyrenzhe OP @dlllcs 有这个可能,如果进入死循环, laravel 会报错吗?
|
11
dlllcs 2016-10-09 23:44:37 +08:00
@copyrenzhe 不会,我觉得这个可能性是最大的
|