サイトアイコン たーちゃんの「ゼロよりはいくらかましな」

【laravel queue】【supervisor】ジョブが複数同時に実行されてしまう

Laravel-queueを使用していてsupervisorで制御していました。

とても時間がかかり、性能を必要とする処理があったので、

1度に1処理だけに制御するためでした。

 

 

ところが、キューにディスパッチしたジョブが1つずつではなくて、

複数同時に実行されてしまって、「??」となったので、

調べてみました。

 

 

 

 

 

 

原因はsupervisor.confの設定

原因はsupervisor.confにLaravel-workerで設定が記載されていると思います。

この中にあるnumprocsが僕の場合は「8」になっていました。

 

 

これはジョブのディスパッチ先として8つのプロセスが起動していることを

意味していて、8つ同時に処理できるということになってしまいます。

 

 

ということで、numprocsを1とすることで同時実行数を1とすることができました!

公式にあるサンプルのsupervisor.confで、numprocs=8 となっていて、

そのまま使ってたので気づかなかった。。。

 

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/artisan queue:work redis
autostart=true
autorestart=true
user=root
numprocs=1
redirect_stderr=true
stdout_logfile=/var/www/html/storage/logs/worker.log

 

 

意外に時間を使ってしまった。。。

 

 


にほんブログ村


人気ブログランキング

モバイルバージョンを終了