Laravel 的主管配置

Supervisord configuration for Laravel

我正在使用 Supervisord 来帮助保持基于 Laravel 的应用程序队列 运行ning。我想知道以下配置是否正确。

在Laravel docs中,例如,numprocs设置为8,这意味着Supervisord会运行 queue:work 8次,是和为什么这是一个很好的事情?

此外,我应该在 queue:work 命令中使用 --daemon 吗?

[program:app-queue]
process_name=%(program_name)s_%(process_num)02d
command=php /home/app/public_html/app/artisan queue:work --daemon --sleep=3 --tries=3
autostart=true
autorestart=true
user=root
startsecs=0
stopwaitsecs=60
redirect_stderr=true
stdout_logfile=/home/app/public_html/app/storage/logs/queue-out.log

numprocs 将产生 8 个进程,然后每 3 秒轮询一次队列。设置 daemon 后,这些进程将不会重新启动,除非被告知在更新代码库时哪个在服务器负载方面既有优势,也有一些潜在边缘情况形式的劣势。

拥有 8 个进程意味着当 运行 宁作业时,您可能有 8 倍的吞吐量。


示例:

在许多情况下,多个进程 运行 并行是有利的。

例如,假设您正在处理 1000 个用户,并想查看每个用户在上个月发表了多少评论。假设每张支票需要一分钟来处理(极端但它更有意义),如果您 运行 然后通过循环遍历 1000 个用户的数组或集合,则需要 1000 分钟才能完成。已经超过 16 个小时了!

如果您将这些作为作业排队并将 numprocs 设置为 16,那么您只需一个多小时就可以完成!