pir*_*max 5 php queue redis supervisord laravel
我使用 Laravel 5.7 和 3 个队列作业,作业之间的时间太长/太慢。
我在第一份工作中 foreach RSS 提要项目,然后在第二份工作中调度该项目,等等...我没有输入详细信息,但有一些可笑的小计算,一定不需要花时间。
问题是每次派遣工作都需要花费大量时间。地平线和望远镜不允许我调试。
我使用的机器有 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
Run Code Online (Sandbox Code Playgroud)
我在 laravel.log 中遇到此错误:
Production.ERROR:App\Jobs\FeederJob 尝试次数过多或运行时间过长。该作业之前可能已超时。
我遇到了同样的问题,做了很多搜索,但没有任何帮助,即使在Horizon Github上有一些关于这个错误的问题,但没有有用的解决方案。问题在于 Horizon 和 Redis 对于繁重任务的错误。
最后,我从 Redis 和 Horizon 切换到 SQL 数据库(无论你在项目中使用什么 MSSQL)作为队列连接,它解决了问题
注意:--timeout=0在你的 artisan 命令中使用