【发布时间】:2019-05-29 05:21:29
【问题描述】:
我使用 Laravel 5.7 和 3 个队列作业,作业之间的时间太长/太慢。
我在第一份工作中 foreach RSS 提要项目,我在第二份工作中发送这个项目,等等......我没有详细输入,但有一些可笑的小计算,一定不要花时间。
问题是每次派遣工作都需要大量时间。 Horizon 和 Telescope 不允许我调试。
我使用的机器有 32 GB 的 RAM,并且有几个进程(每个进程 15 个)可以转动尾巴。
[program:mywebsite_feeder]
command=/RunCloud/Packages/php72rc/bin/php artisan queue:work redis --queue=feeder --tries=3 --sleep=0
directory=/home/runcloud/webapps/mywebsite
redirect_stderr=true
autostart=true
autorestart=true
user=runcloud
numprocs=15
process_name=%(program_name)s_%(process_num)s
我在 laravel.log 中有这个错误:
production.ERROR:App\Jobs\FeederJob 已尝试太多次 或运行时间过长。该作业之前可能已超时。
【问题讨论】:
-
您是否使用“同步”队列驱动程序?对于调试失败的作业,最好尝试/捕获将异常详细信息记录到日志中。
-
我不想使用同步,但使用 Redis。
-
如果分派需要很长时间并且作业应该需要很长时间,这可能表明作业是同步运行的,而不是分派到队列中。检查代码中某处的 dd(env('QUEUE_DRIVER'))。
-
它给了我:redis,而不是同步。
-
你打电话的是 ::dispatch 还是 ::dispatchNow ?如果没有代码的 sn-p,就很难找出问题所在。我将 redis 用于我的队列,并且调度到队列是即时的。
标签: php laravel redis queue supervisord