参考以下文章:
-
队列中使用curl 相关代码没有设置超时时间导致队列超时没有报错,卡死不执行后续队列任务。
Laravel队列任务超时后不退出,导致队列挂起的故障分析 -
在laravel 队列中设置监听报错:
Laravel队列使用中踩的坑,不报错但是队列一直再重试 -
laravel 中文论坛讨论帖:
关于 Laravel 队列经常卡死的问题。
其中第一点就是我遇到的问题,curl连接超时报错,laravel队列是捕获不到的。希望可以帮到遇到同样问题的你。
- redis队列未找到消费队列
最近又遇到这种问题(公司这套代码是laravel5.2),在supervisor中使用的是queue:work --daemon(命令1)来监听队列,队列只消费了1条,然后就不再消费了。如果使用queue:listen则可以正常执行,但是使用listen 系统资源占用太大了。经过以上3种问题排查后还是没找到问题。后来经过运维排查运行完整日子(命令2),排查到代码层面的问题。
//1.
php artisan queue:work --daemon --tries=3 --delay=10 --memory=30 --queue=default
//2.
strace -f -s 100 -o /tmp/aa.log php artisan queue:work --daemon --sleep=3 --tries=3 --queue=default
本次问题所在: 队列reids驱动默认使用redis的数据库0,在代码中切换了redis的数据库到3($redis->select(3);),第一条队列可以正常消费,到要消费第二条时,laravel队列不会重新切换回到数据库0,还是在数据3找,就找不到需要消费的队列了。