2017-03-20 10 views
1

私のプロジェクトでは、Beanstalkdを作業キューとして使用しています。Laravel + Beanstalkd:サービスとして "queue:listen"を実行する方法

私のプロジェクトが完了し、VPS(プロダクションサーバ)にそれを導入する必要があります。

私を混乱させるものがあります。プロダクションサーバーにsshして、手動でphp artisan queue:listenと入力する必要がありますか? (それは駄目です)

サービスとしてqueue:listenを実行するサーバーはありますか?

答えて

7

プロダクションでキューを実行するには、Supervisorのようなものを使用する必要があります。これにより、バックグラウンドでプロセスを実行し、キューに入れられたジョブを処理するワーカーの数を指定し、プロセスが失敗した場合にキューを再起動できます。

使用するキューについては、それはあなた次第です。以前は、BeanstalkdをインスタンスとAmazon SQSにローカルにインストールしました。ローカルのインスタンスは、基本的な電子メール送信やその他の非同期タスクには問題ありませんでしたが、SQSは、メッセージ量が膨大で規模を拡大する必要がある場合に最適でした。 IronMQのような他のSaaS製品もありますが、スーパーバイザを使用していないため、プロダクションで問題に遭遇する一般的な理由があります。

スーパーバイザはapt-getでインストールできます。次の設定は、開始するには良い場所です:

[program:laravel-worker] 
process_name=%(program_name)s_%(process_num)02d 
command=php /home/forge/app.com/artisan queue:work --sleep=3 --tries=3 
autostart=true 
autorestart=true 
numprocs=8 
stdout_logfile=/home/user/app.com/worker.log 

これは、次の操作を行います:

  • が実行に
  • キューワーカーにphp artisan queue:workコマンド
  • を一意の名前を付け、自動的にキューを開始しますワーカーがシステムを再起動してキューを自動的に再起動すると失敗する。
  • 8つのプロセスにわたってキューワーカーを実行する。スーパーバイザーを開始するには/home/user/app.com/worker.log

  • ログイン任意の出力)、ニーズに応じて析出し、設定を再読み込みした後、次の(/再起動)を実行したい:

    sudo supervisorctl start laravel-worker:* 
    

    documentation Supervisorを使用してLaravelのキュープロセスを実行する方法について詳細な情報を提供します。

  • +0

    大きな説明。このプロジェクトは1日に5万件以上のメッセージを送信します。私はBeanstalkdを使ったことはありません。 Amazon SQSに行くべきですか? –

    +1

    それはすばらしいサービスですし、アプリケーションがキューを大量に使用しているように聞こえるので、SQSを使用するとお金がかかるでしょう。状況が間違って始まると、あなたが得たメトリクスをさらに監視することは非常に貴重なものになります! – edcs

    +2

    Beanstalkdを1日3M以上で使用しています。オープンソースなので、優れたメトリクスがあり、偉大な管理者パネルもあります:https://github.com/ptrofimov/beanstalk_console – Pentium10

    関連する問題