laravel队列系统是否适合大型项目?
我需要知道laravel 5队列管理系统是否适合大型项目(拥有约100.000用户)。我想每天一次执行类似消息传递(不是垃圾邮件:))用户的操作。
Redis是否足以胜任这项工作(排队)?还是最好使用专门用于排队的库(例如beantalkd)?
回答:
为了公平起见,并尝试对此问题发布合理的答案,我们应该考虑以下几点:
- 订阅人数
- 要交付的内容
- 运行同时队列所需的系统资源
100,000个订阅的电子邮件将需要在RAM中存储100,000 x [数据],因此让电子邮件地址的平均长度为32个字符(字节)。
100,000 x 32字节= 3.2MB
当然,Laravel的队列系统会序列化对象,因此实际的内存使用率可能会更高(Redis内存用于Laravel队列),但不足以引起您的注意。
过去我曾建议过,用于发送订阅的电子邮件的 成功的设置应在以下设备上运行:
- 最低2GB RAM
- 2个处理器/内核
Laravel运行的队列系统对服务器的负担不是很大。与往常一样,根据需求扩展。
此类软件(使用Laravel)将包括以下内容:
- 雷迪斯
- 主管
将Redis设置为Laravel的队列驱动程序。记住要composer require predis/predis
。
您还需要创建迁移以存储失败的作业。Laravel默认内置了一个:
php artisan queue:failed-table
php artisan migrate
安装Supervisor后,在其中创建一个conf文件,/etc/supervisor/conf.d
以便Supervisor可以选择队列的配置:
touch /etc/supervisor/conf.d/myprojectqueue.conf
nano
/etc/supervisor/conf.d/myprojectqueue.conf
在其中布置适合您环境的配置。在下面的演示设置中,将在您的队列上一次执行4个队列运行器:
[program:myprojectqueue] command=php /path/to/project/artisan queue:listen --tries=1
directory=/path/to/project
stdout_logfile=/path/to/project/storage/logs/supervisord.log
redirect_stderr=true
autostart=true
autorestart=true
numprocs = 4
process_name = %(program_name)s%(process_num)s
保存配置文件。启动/重新启动主管。
想要查询更多的信息:
https://laravel.com/docs/master/queues
https://laravel.com/docs/master/queues#supervisor-
configuration
https://laravel.com/docs/master/mail#queueing-
https://laravel.com/docs/master/scheduling
以上是 laravel队列系统是否适合大型项目? 的全部内容, 来源链接: utcz.com/qa/418402.html