laravel 队列的相关问题

2016-10-05 16:33:05 +08:00
 copyrenzhe

参考 laravel 官方文档,队列驱动使用 beanstalkd , supervisor 监控队列进程,但是运行一段时间之后, queue:work 的进程显示还在运行中,但是已经不处理队列了,剩余队列一直不处理,也没有报错信息,重启 supervisor 或者 queue:work 进程后,又正常,不过运行一段时间后,还是会停止,队列命令是:
php artisan queue:work --sleep=3 --tries=1 --memory=512 --daemon 有没有大神知道是什么原因造成的?

4444 次点击
所在节点    PHP
11 条回复
ichou
2016-10-05 16:54:57 +08:00
看描述 应该是队列卡住了,你的队列任务可能由于某些原因僵死了,导致一直占用着进程不会退出
tiseheaini
2016-10-06 00:06:56 +08:00
不清楚 “一段时间” 是多长时间,期间有没有部署过代码
部署过代码需要 重启 php artisan queue:restart
目前能想到的可能是部署过代码
copyrenzhe
2016-10-06 00:37:44 +08:00
@ichou 我也是这么猜测的,但是现在不知道为什么会僵死,有这方面的经验吗?
copyrenzhe
2016-10-06 00:38:34 +08:00
@tiseheaini “一段时间”有时是一两天,有时是几个小时,不定。期间没有重新部署代码
tiseheaini
2016-10-06 00:47:12 +08:00
@copyrenzhe 贴一下 supervisor 的配置看看,这样的问题也没有遇到过
copyrenzhe
2016-10-06 15:37:25 +08:00
@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
dlllcs
2016-10-06 17:05:06 +08:00
有没有可能是某个任务进入死循环了?
takashiki
2016-10-07 19:02:58 +08:00
有打出日志看看么,如果用 mysql 作为驱动也会因为 lost connection 而报错的
copyrenzhe
2016-10-07 21:38:51 +08:00
@takashiki 日志看过了,没有报错信息,队列驱动用的 beanstalkd
copyrenzhe
2016-10-07 21:39:25 +08:00
@dlllcs 有这个可能,如果进入死循环, laravel 会报错吗?
dlllcs
2016-10-09 23:44:37 +08:00
@copyrenzhe 不会,我觉得这个可能性是最大的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/310686

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX