2016-06-15 6 views
0

laravel 5のキュー管理システムが大きなプロジェクト(約100.000ユーザー)に適しているかどうかを知る必要がありました。私はメッセージング(スパムではありません:)のような何かを毎日一度にしたいと思っています。
このジョブ(キューイング)に十分なredisはありますか?あるいは、特別なキューイング用のlib(beanstalkdのようなもの)を使う方が良いでしょうか?laravelキューシステムは大きなプロジェクトに適していますか?

+1

なぜ否決?あなたはそれについて何も知らないのであれば答えることはできません。 –

答えて

4

は公平であるために、我々は以下の点を考慮すべき試してみて、この質問への合理的な答えを投稿する:

  • コンテンツがに必要な
  • システムリソースを配信する加入者数同時キューを実行する

100,000 x [データ]をRAMに格納する必要があるため、電子メールアドレスの長さを32文字に平均することができます(バイトes)。

100,000×32バイト=もちろん3.2メガバイト

、Laravelのキューシステムはオブジェクトなので、実際のメモリ使用量は、おそらく(Laravelキューに使用Redisのメモリ)高くなりますserialises、しかしを気には十分ではありません。

私が購読し、電子メールメッセージを送信するための一見成功したセットアップは、以下の上で実行することを過去に助言してきました:

  • 2ギガバイトのRAM最小
  • 2プロセッサ/コア

キューシステムLaravelを実行すると、サーバーに課金されることはありません。いつものように、要件に合わせて拡張してください。

(Laravelを使用)などのソフトウェアは、次で構成されます

  • Redisの
  • スーパーバイザLaravelのキュー・ドライバーとしてのRedisを設定

。覚えているのはcomposer require predis/predisです。

また、失敗したジョブを保存するために移行を作成する必要があります。スーパーバイザーがあなたのキューの設定に拾うことができるように/etc/supervisor/conf.dにconfファイルを作成するスーパーバイザーがインストールされると

php artisan queue:failed-table

php artisan migrate

、::Laravelはデフォルトで構築されたものを持っている

touch /etc/supervisor/conf.d/myprojectqueue.conf nano /etc/supervisor/conf.d/myprojectqueue.conf

そこには、環境に合わせた設定をレイアウトしますnt。次のデモをセットアップすると、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 

confファイルを保存します。スーパーバイザの起動/再起動。詳細については

https://laravel.com/docs/master/queues

https://laravel.com/docs/master/queues#supervisor-configuration

https://laravel.com/docs/master/mail#queueing-mail

https://laravel.com/docs/master/scheduling

+0

ありがとう@ジャスティン。それは完全で魅力的な答えでした。私はlaravelのredisでキューイングしようとしました。そして、ララベルコードもチェックしました。私はlaravelがキュー自体を管理しており、redisは裏付けされたデータベースだと分かりました。キューが遅くなると思う。ちょうど私がメインプロジェクトとは別のキュー管理システムを実装したいのかどうかを知りたかっただけです。たとえば、Python(django)とセロリで実装していますか?またはcppとbeanstalkで? –

関連する問題