web-dev-qa-db-ja.com

スーパーバイザーを使用して複数のLaravelキューワーカーを実行する

私はLaravelデータベースドライバーとスーパーバイザーを使用してキューを使用し、キューワーカーを常に実行し続けています:

[program:laravel_queue]
command=php artisan queue:listen --timeout=1800 --tries=5
directory=/var/app/current
stdout_logfile=/var/app/support/logs/laravel-queue.log
logfile_maxbytes=0
logfile_backups=0
redirect_stderr=true
autostart=true
autorestart=true
startretries=86400
EOB

一部のキュータスクは、完了するまでに約10分かかる場合があります。

私は質問に2つの部分があります:

1)上記のスクリプトを編集して、同じキューで複数(例:3)のキューワーカーを実行するにはどうすればよいですか?.

2)処理を待機しているジョブの数に基づいて実行中のキューワーカーの数をスケーリングする方法はありますか?

質問2の理由は、忙しい時間と静かな時間がたくさんあるため、3人のリスナーが常に実行している状態でリソースを無駄にしたくないからです。

7
Ryk Waters

スーパーバイザーaddnumprocs = 5を使用して複数のジョブを自動的に実行するには、スーパーバイザーが一度に5つのプロセスを実行し、それらすべてを監視することを意味します。この訪問についてもっと知るために- https://cloudtoolz.io/queue-laravel-in-database/

1
kanhaiya charka

Laravel docs からnumprocs=3を使用して3つのプロセスを生成できます。

また、キューを指定します:command=php artisan queue:listen --queue=myqueue --tries=5

0
Curvian Vynes

スーパーバイザー設定ファイル内。次のコードを追加します

process_name=%(program_name)s_%(process_num)02d
numprocs=8

これにより、プログラムの8つの異なるプロセスが作成されます。必要に応じて、numprocs=8の値を変更する必要があります。

Sudo supervisorctl statusで実行中のプロセスの数を確認できます

0
Satish Shinde