Pada artikel sebelumnya kita sudah membahas tentang laravel queue. Laravel queue ini kita manfaatkan untuk memecah proses bisnis sehingga waktu yang digunakan untuk melakukan suatu proses bisnis menjadi lebih efisien. Namun terdapat kendala pada saat menggunakan laravel queue ini. Salah satu kendala pada saat menggunakan laravel queue ini adalah queue worker yang menangani job ini yang tiba-tiba mati atau prosesnya terhenti oleh beberapa hal. Dan baru diketahui setelah ada report dari user atau ketika ada beberapa proses yang tidak jalan. Kita perlu secara berkala memonitor queue worker ini dan start kembali ketika prosesnya terhenti yang notabene cukup merepotkan apabila kita lakukan secara manual. Kabar baiknya terdapat program yang dapat menangani masalah ini, yaitu supervisor.
Supervisor adalah sistem klien/server yang memungkinkan penggunanya untuk memonitor dan mengontrol sejumlah proses pada sistem operasi mirip UNIX.
Supervisor memiliki beberapa tujuan yang sama dengan program-program seperti launchd, daemontools, dan runit. Tidak seperti beberapa program ini, program ini tidak dimaksudkan untuk dijalankan sebagai pengganti init sebagai "id proses 1". Sebaliknya, program ini dimaksudkan untuk digunakan untuk mengontrol proses yang terkait dengan proyek atau pelanggan, dan dimaksudkan untuk memulai seperti program lain pada saat boot.
Pada postingan kali ini kita akan coba gunakan supervisor untuk mengelola dan memonitor laravel queue. Ada beberapa hal yang akan akan kita coba, yaitu.
Pada saat tutorial ini ditulis, ada beberapa hal yang saya gunakan dan saya persiapkan terlebih dahulu, yaitu.
Pertama kita install dulu supervisor. Buka terminal lalu run command berikut ini.
sudo apt update && sudo apt install supervisor
Tunggu sampai proses instalasi selesai.
Ketika proses instalasi selesai, service supervisor sudah running secara otomatis. Kita bisa cek status service supervisor menggunakan command berikut ini.
sudo systemctl status supervisor
Selain melalui terminal, kita juga bisa melihat proses supervisor melalui web interface. Untuk mengaktifkan web interface, kita modifikasi terlebih dahulu file konfigurasi supervisor.
sudo nano /etc/supervisor/supervisord.conf
Selanjutnya kita tambahkan konfigurasi berikut ini di awal file.
[inet_http_server]
port=127.0.0.1:9001
username=admin
password=admin
Save dan close file, lalu restart supervisor service.
suod systemctl restart supervisor
Untuk mengakses web interface supervisor, buka http://127.0.0.1:9001/
di web browser.
Setelah supervisor berhasil kita install di step sebelumnya, sekarang kita akan buat queue worker untuk aplikasi web yang kita develop menggunakan laravel.
Sebagai contoh, Lokasi laravel web app yang kita bangun ada di lokasi berikut ini.
/var/www/html/laravel-queue
Sekarang kita buat file konfigurasi supervisor untuk web app kita.
sudo nano /etc/supervisor/conf.d/laravel-worker.conf
Kita ketika konfigurasi berikut ini.
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/laravel-queue/artisan queue:work --sleep=3 --tries=3 >
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=root
numprocs=8
redirect_stderr=true
stdout_logfile=/var/www/html/laravel-queue/worker.log
stopwaitsecs=3600
Mari kita bahas setiap bagian dari konfigurasi ini:
[program:laravel-worker]
laravel-worker
.process_name=%(programname)s%(process_num)02d
%(program_name)s
akan diganti dengan nama program (laravel-worker
), dan %(process_num)02d
akan diganti dengan nomor proses dua digit.command=php /var/www/html/laravel-queue/artisan queue:work --sleep=3 --tries=3 --max-time=3600
--sleep
, --tries
, dan --max-time
menentukan perilaku queue worker.autostart=true
laravel-worker
) akan secara otomatis dijalankan saat Supervisor mulai.autorestart=true
stopasgroup=true
killasgroup=true
user=root
numprocs=8
redirect_stderr=true
stdout_logfile=/var/www/html/laravel-queue/worker.log
stopwaitsecs=3600
Selanjutnya kita run command berikut ini, supaya supervisor membaca file konfigurasi yang baru saja kita buat.
sudo supervisorctl reread
Output
laravel-worker: available
Selanjutnya kita run command ini supaya supervisor menerapkan perubahan konfigurasi yang sudah dibaca.
sudo supervisorctl update
Output:
laravel-worker: added process group
Setelah itu kita start laravel worker menggunakan command berikut ini.
sudo supervisorctl start "laravel-worker:*"
Untuk mengetahui apakah laravel worker berjalan atau tidak, kita bisa pakai command berikut ini.
sudo supervisorctl status
Output:
laravel-worker:laravel-worker_00 RUNNING pid 65354, uptime 0:04:31
laravel-worker:laravel-worker_01 RUNNING pid 65355, uptime 0:04:31
laravel-worker:laravel-worker_02 RUNNING pid 65356, uptime 0:04:31
laravel-worker:laravel-worker_03 RUNNING pid 65357, uptime 0:04:31
laravel-worker:laravel-worker_04 RUNNING pid 65358, uptime 0:04:31
laravel-worker:laravel-worker_05 RUNNING pid 65359, uptime 0:04:31
laravel-worker:laravel-worker_06 RUNNING pid 65360, uptime 0:04:31
laravel-worker:laravel-worker_07 RUNNING pid 65361, uptime 0:04:31
Status yang ditampilkan menunjukkan bahwa semua pekerja Laravel sedang berjalan dengan baik. Setiap baris menunjukkan informasi tentang masing-masing worker, termasuk nama worker, status (RUNNING), dan ID proses (PID) beserta waktu berjalan (uptime).
Jika semuanya berjalan seperti yang diharapkan dan tidak ada pesan kesalahan atau masalah, maka konfigurasi Supervisor untuk laravel worker kita berjalan dengan baik. Kita dapat memantau status ini secara berkala untuk memastikan keberlanjutan operasi laravel worker.
© 2024 qadrLabs . All rights reserved. 000515268