Sqs及びSupervisorの設定
基本操作
- 停止
`sudo supervisorctl stop 【worker名】
再起動
sudo supervisorctl reread
で .conf の再読み込みsudo supervisorctl update
で supervisor 自体に最新の conf 情報を反映させるsudo supervisorctl start canly-localposts-worker:*
で開始
全ての woker が RUNNING
になればOK。
confファイルの設定
- ファイルの作成箇所
/etc/supervisor/conf.d/
内に、各workerごとに .conf ファイルがあるので、その中身を確認する。
【canly-localposts-worker.conf の例】
[program:canly-localposts-worker] process_name=%(program_name)s_%(process_num)02d command=php /usr/local/var/www/201906_MEO-Cloud/artisan queue:work --queue=queue_name --sleep=2 --timeout=7200 autostart=true autorestart=true user=ubuntu numprocs=1 redirect_stderr=true stdout_logfile=/usr/local/var/www/201906_MEO-Cloud/storage/logs/canly-localposts-worker.log
トラブル時のチェック項目
- まずは状況を確認する
sudo supervisorctl status
以下のように RUNNING
になっていれば正常稼働中。
ubuntu@ip-172-31-5-73:~$ sudo supervisorctl status canly-localposts-worker:canly-localposts-worker_00 RUNNING pid 8597, uptime 4:30:45 canly-standard-worker:canly-standard-worker_00 RUNNING pid 18768, uptime 17:54:56 insight-csv-exporting:insight-csv-exporting_00 RUNNING pid 18769, uptime 17:54:56 update_store_using_csv_worker:update_store_using_csv_worker_00 RUNNING pid 18794, uptime 17:54:54
(それ以外のステータスがある場合は以下に続く。)
supervisor の ログで起動状況などを確認する
less /var/log/supervisor/supervisord.log
起動→エラーでworkerが終了→supervisorが強制的に再起動→エラー…
を繰り返しているような場合があるため、この場合はエラー原因を取り除くまではいったん該当の worker を停止させておく。
キューの設定
redisやsqsを使用できるが今回は、sqsでのキュー設定方法を記載する。
- awsのコンソールでsqsでキューを作成。
- queue.phpでドライバーの設定
'sqs_create_media' => [ 'driver' => 'sqs', 'key' => env('AWS_KEY', ''), 'secret' => env('AWS_SECRET', ''), 'prefix' => 'https://sqs.ap-northeast-1.amazonaws.com/608782139973', 'queue' => 'Bulk-Create-Media-Queue', 'region' => 'ap-northeast-1', ],
- envのQueueDriverに上記を指定
QUEUE_DRIVER=sqs_create_media
jobをdispatchする際に以下のどちらかでやる。
Job::dispatch->onConnection(env('QUEUE_DRIVER','sync'));
Job::dispatch->onQueue('Bulk-Create-Media-Queue');
onQueueの引数の中身もenvにして読みこむと良い。
上記二つの判断としては、既にQUEUE_DRIVER指定されており変更できない場合は、2つ目、変更できる場合は1つ目でやると良いかも。