
この記事では、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:work
と queue:listen
がありますが、両者の違いとしては、Laravelのドキュメントに下記のように記載されています。
queue:listenコマンドを使用する場合、更新されたコードをリロードしたり、アプリケーションの状態をリセットしたりするときに、ワーカを手動で再起動する必要はありません。ただし、このコマンドはqueue:workコマンドよりも大幅に効率が低くなります。
キュー 8.x Laravel
上記のように「このコマンドはqueue:workコマンドよりも大幅に効率が低くなります」と記載されているように queue:listen
に関しては、都度プロセスを立ち上げる分、CPU を食います。
なので、下記のように環境ごとに queue:listen
と queue: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 のキューワーカを管理してみましょう!
コメント