supervisor を用いて Laravel の キューワーカを管理する方法

supervisor を用いて Laravel の キューワーカを管理する方法Laravel

この記事では、supervisor を用いて Laravel のキューワーカを管理する方法について書いています!

supervisor を用いて Laravel の キューワーカを管理する方法

supervisor をインストール

supervisor を epel リポジトリからインストールします。

sudo yum --enablerepo=epel install supervisor

supervisor の設定

supervisor の設定に関しては、/etc/supervisord.conf ファイルに記載してあり、この中で supervisord.d/*.ini ファイルを読み込むようにしています。

[include]
files = supervisord.d/*.ini

なので、/etc/supervisord.d 配下に管理したいプロセスの設定ファイルを作成していきます。

/etc/supervisord.d/sample.ini

[program:sample]
command=bash -c "APPLICATION_ENV=local /usr/bin/php /home/{$USER}/sample/artisan queue:listen --queue=sample --sleep=20 --timeout=400"
user=nginx
autostart=true
autorestart=true

supervisor の設定に関しては、公式ドキュメントを参照ください。

Laravel の キュー管理に関するコマンドとしては、queue:workqueue:listen がありますが、両者の違いとしては、Laravelのドキュメントに下記のように記載されています。

queue:listenコマンドを使用する場合、更新されたコードをリロードしたり、アプリケーションの状態をリセットしたりするときに、ワーカを手動で再起動する必要はありません。ただし、このコマンドはqueue:workコマンドよりも大幅に効率が低くなります。

キュー 8.x Laravel

上記のように「このコマンドはqueue:workコマンドよりも大幅に効率が低くなります」と記載されているように queue:listen に関しては、都度プロセスを立ち上げる分、CPU を食います。

なので、下記のように環境ごとに queue:listenqueue:work を使い分けるのが良いかなと思います。

  • 開発環境:queue:listen
  • ステージ・本番環境:queue:work

supervisor の再起動と自動起動設定を行う

supervisor の設定を終えたので、あとは supervisor の再起動と自動起動を設定しておきます。

sudo service supervisord restart
sudo systemctl enable supervisord.service

これで、queue:listen プロセスがバックグラウンドで永続的に実行し続けてくれるようになりました。

まとめ|supervisor を用いて Laravel の キューワーカを管理する方法

ここまで、「supervisor を用いて Laravel のキューワーカを管理する方法」について書いてきました。

supervisor の設定自体はそこまで複雑でもないので、さくっと設定して、Laravel のキューワーカを管理してみましょう!

Laravel関連のおすすめ本・Udemy講座

コメント

タイトルとURLをコピーしました