laravel队列系统适合大项目吗?
Is laravel queue system suitable for big projects?
我想知道 laravel 5 队列管理系统是否适合大型项目(拥有大约 100,000 个用户)。我想每天一次向用户发送消息(不是垃圾邮件 :))。
redis 是否足以胜任这项工作(排队)?或者最好使用专门用于排队的库(如beanstalkd)?
为了公平并尝试 post 这个问题的合理答案,我们应该考虑以下几点:
- 订阅人数
- 要传递的内容
- 运行 个并发队列所需的系统资源
100,000 封订阅的电子邮件需要在 RAM 中存储 100,000 x [数据],因此我们将电子邮件地址长度平均为 32 个字符(字节)。
100,000 x 32 字节 = 3.2MB
当然,Laravel的队列系统序列化对象,所以实际内存使用量可能会更高(Redis内存用于Laravel队列),但不足以让您担心。
我过去曾建议,看似成功发送订阅电子邮件的设置会运行以下内容:
- 最低 2GB 内存
- 2 个处理器/内核
队列系统 Laravel 运行s 对服务器来说并不太费力。一如既往,根据需求进行扩展。
用于此类(使用 Laravel)的软件将包括以下内容:
- Redis
- 主管
将 Redis 设置为 Laravel 的队列驱动程序。记得composer require predis/predis
.
您还需要创建迁移以存储失败的作业。 Laravel 默认内置一个:
php artisan queue:failed-table
php artisan migrate
安装 Supervisor 后,在 /etc/supervisor/conf.d
中创建一个 conf 文件,以便 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
保存配置文件。启动/重启 Supervisor。
更多信息:
https://laravel.com/docs/master/queues
https://laravel.com/docs/master/queues#supervisor-configuration
我想知道 laravel 5 队列管理系统是否适合大型项目(拥有大约 100,000 个用户)。我想每天一次向用户发送消息(不是垃圾邮件 :))。
redis 是否足以胜任这项工作(排队)?或者最好使用专门用于排队的库(如beanstalkd)?
为了公平并尝试 post 这个问题的合理答案,我们应该考虑以下几点:
- 订阅人数
- 要传递的内容
- 运行 个并发队列所需的系统资源
100,000 封订阅的电子邮件需要在 RAM 中存储 100,000 x [数据],因此我们将电子邮件地址长度平均为 32 个字符(字节)。
100,000 x 32 字节 = 3.2MB
当然,Laravel的队列系统序列化对象,所以实际内存使用量可能会更高(Redis内存用于Laravel队列),但不足以让您担心。
我过去曾建议,看似成功发送订阅电子邮件的设置会运行以下内容:
- 最低 2GB 内存
- 2 个处理器/内核
队列系统 Laravel 运行s 对服务器来说并不太费力。一如既往,根据需求进行扩展。
用于此类(使用 Laravel)的软件将包括以下内容:
- Redis
- 主管
将 Redis 设置为 Laravel 的队列驱动程序。记得composer require predis/predis
.
您还需要创建迁移以存储失败的作业。 Laravel 默认内置一个:
php artisan queue:failed-table
php artisan migrate
安装 Supervisor 后,在 /etc/supervisor/conf.d
中创建一个 conf 文件,以便 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
保存配置文件。启动/重启 Supervisor。
更多信息:
https://laravel.com/docs/master/queues
https://laravel.com/docs/master/queues#supervisor-configuration