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
意外に時間を使ってしまった。。。
20代前半までは東京で音楽をやりながら両手の指以上の業種でアルバイト生活をしていましたが、某大手プロバイダのテレアポのバイトでPCの知識の無さに愕然とし、コンピュータをもっと知りたい!と思ったことをきっかけに25歳の時にITの世界に未経験で飛び込みました。
紆余曲折を経て、現在は個人事業主としてお仕事させていただいており、10年ほどになります。
web制作から企業システム構築、ツール開発など、フロントエンドもバックエンドもサーバーもDBAも依頼があれば何でもやってきた雑食系エンジニアです。
今風にいうとフルスタックエンジニアということになるのでしょうか??
→ 詳細プロフィールというか、生い立ちはこちら
→スキルシートをご覧になる場合はこちら
→お仕事のご依頼やお見積りなどお問い合わせはこちらから!
コメント