Belirti: 6+ Horizon master, 14+ worker; her biri ~%10-16 CPU. Load 15+ seviyesinde.
Neden: queue:health-check komutu her dakika runInBackground; QueueHealthService içinde nohup php artisan horizon & çağrısı var. AutoQueueHealthCheck middleware admin sayfalarında 5 dakikada bir job dispatch ediyor. queue:ensure-workers cron'u docker container kontrolü yapıyor. Terminate edilmeden yeni Horizon setleri açılıyor.
Etkisi: CPU tüketimi + MySQL bağlantı şişmesi (1040 hatası); PHP-FPM kaynakları kısıtlanıyor, yanıt süresi artıyor.
Belirti: Debugbar kayıtları 1.6 GB; Pulse slow request ve query kayıtları logda görünüyor; APP_DEBUG/APP_DEBUG_TOOLS true.
Neden: Prod ortamında debug flag'leri kapatılmamış; Debugbar tüm kolektörlerle çalışıyor, Pulse/Telescope kayıt yazıyor.
Etkisi: Her istekte ekstra disk I/O ve DB yazımı; response time ve disk kullanımını artırıyor.
Belirti: Too many connections hatası; tenant sorguları ve Pulse insert'leri görüldü.
Neden: Horizon çoğalması + debug kayıtlarının yoğun DB yazımı; MySQL max_connections ile PHP/Horizon süreç sayısı uyumsuz.
Etkisi: 500/1040 riskleri, geciken sorgular, kuyrukların yavaşlaması.
queue:health-check içindeki Horizon auto-start'ı devre dışı bırak; AutoQueueHealthCheck middleware'in queue health tetiklemesini kapat veya admin dışına al; queue:ensure-workers (docker) cron'unu prod’da durdur.
Ardından tek seferlik horizon:terminate (ve gerekirse ps ile kalan worker'ları sonlandır) + Supervisor/systemd ile tek master setini çalışır bırak.
Hedef: Tek Horizon master + limitli worker (config/horizon.php prod: maxProcesses 2/1/1) → CPU ve bağlantı tüketimi düşer.
APP_DEBUG=false, APP_DEBUG_TOOLS=false yap; Debugbar/Telescope/Pulse'ı prod için kapat; storage/debugbar içeriğini temizle; Pulse/Telescope tablolarını trim et.
Hedef: İstek başına I/O'yu düşürmek, disk alanını geri kazanmak.
Horizon süreç sayısını azalttıktan sonra MySQL max_connections değerini PHP-FPM + Horizon toplamına göre ayarla; uzun süren queue işleri için timeout ve maxJobs limitlerini takip et.
Hedef: 1040 hatalarını ortadan kaldırmak, kuyruk stabilitesini sağlamak.
queue:health-check periyodunu düşür veya kapat; docker tabanlı ensure-workers komutunu dev ortamına taşı; AutoQueueHealthCheck rate limit'ini yükselt veya tamamen devre dışı bırak.
Hedef: Gereksiz süreç yaratımını ve log gürültüsünü azaltmak.
Altyapı sakinleştikten sonra module_tenants sorgusuna uygun index (tenant_id, is_active, module_id) kontrolü; Pulse örnekleme oranını düşür veya tamamen kapat.
Hedef: DB yanıt süresini iyileştirmek, responsecache kazancını artırmak.