İçeriğe geç

Laravel kuyrukları canlıda nasıl ayakta tutulur? Supervisor rehberi

Yerelde sorunsuz çalışan kuyruklar canlıya çıkınca neden durur? Queue worker'ları Supervisor ile yönetmenin ve sık yapılan hataların kısa rehberi.

SÖ Semih Özmen 2 dk okuma

E-posta gönderimi, bildirimler, dış servis istekleri, rapor üretimi… Kullanıcıyı bekletmemesi gereken her iş için Laravel kuyrukları harika bir araçtır. Ancak yerelde php artisan queue:work ile çalışan kuyruk, canlı sunucuda terminal kapanınca durur.

Supervisor neden gerekli?

Supervisor, bir süreci arka planda sürekli çalışır halde tutan ve çökerse yeniden başlatan bir süreç yöneticisidir. Ubuntu üzerinde kurulumu basittir:

sudo apt install supervisor

Ardından /etc/supervisor/conf.d/laravel-worker.conf dosyası oluşturulur:

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/proje/artisan queue:work --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/proje/storage/logs/worker.log
stopwaitsecs=3600
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start "laravel-worker:*"

En sık yapılan hata: deploy sonrası eski kod

Queue worker uzun süre çalışan bir süreçtir ve uygulamayı belleğe bir kez yükler. Yeni kod yayına alındığında worker eski kodla çalışmaya devam eder. Bu yüzden her deploy sonrasında şu komut çalıştırılmalıdır:

php artisan queue:restart

Diğer kontrol listesi

  • Scheduler için cron: * * * * * php /var/www/proje/artisan schedule:run satırı eklenmemişse zamanlanmış görevler hiç çalışmaz.
  • Başarısız işler: failed_jobs tablosunu düzenli izleyin; queue:retry ile yeniden deneyebilirsiniz.
  • Zaman aşımları: Uzun süren işlerde --timeout değerinin, kuyruk bağlantısındaki retry_after değerinden küçük olması gerekir.
  • Loglar: Sorun çıktığında ilk bakılacak yer worker log dosyası ve storage/logs klasörüdür.

Doğru kurulmuş bir kuyruk altyapısı, uygulamanın hem hızlı hem de güvenilir hissettirmesinin görünmeyen kahramanıdır.

#laravel #queue #supervisor #linux

Benzer bir projeniz mi var?

Fikrinizi konuşalım, size en uygun yol haritasını çıkaralım.

İletişime geç