使用Supervisor运行多个Laravel队列工作程序
我使用Laravel队列使用数据库驱动程序和管理程序来保持队列工作程序始终运行:
[program:laravel_queue] command=php artisan queue:listen --timeout=1800 --tries=5 directory=/var/app/current stdout_logfile=/var/app/support/logs/laravel-queue.log logfile_maxbytes=0 logfile_backups=0 redirect_stderr=true autostart=true autorestart=true startretries=86400 EOB 某些队列任务可能需要大约10分钟才能完成. 我有两个问题: 1)如何编辑上述脚本以在同一队列上运行多个(例如3个)队列工作程序. 2)是否有办法根据等待处理的作业数量来扩展运行的队列工作者数量? 问题2的原因是我们有很多繁忙的时间,然后很多安静的时间,所以我真的不想浪费资源与3个听众一直运行. 解决方法
在主管中,您可以使用参数numprocs指定进程数量,因此您可以在脚本中添加一行说明:
numprocs = 5 现在,您可以做一些聪明的事情,例如,如果只有一些队列上运行的进程花费的时间太长,您可以创建一组不同的队列进程来处理这些进程以及其他用于轻量级进程的进程. 您还可以在一个管理程序配置文件中指定queue priorities,例如–queue = lightprocess,longprocess.这样,您的工作人员将在运行longprocess之前首先查找lightprocess. 要回答你的第二个问题,不,就主管而言,所有进程都在运行,它不知道队列是忙还是空闲,因此它不能杀死进程并根据它们的使用创建它们,所以不,你可以没有动态配置,只有在您拥有的进程繁忙时才创建更多进程. 注意,如果分配的numprocs超过1个,则必须在该名称中添加进程数.根据主管配置文档:
主管配置文档:http://supervisord.org/configuration.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |