Laravel kuyrukları çalışırken “Failed to open stream: Too many open files” hatası alınıyorsa, ancak normal web servisi sorun yaşamıyorsa, bu muhtemelen kuyruk sürecindeki bir anomaliyi gösterir.
1. Çözüm
1. Çözüm
Mevcut dosya limiti kontrol edilebilir:
ulimit -n
Eğer mevcut limit çok düşükse, 65536 olarak değiştirilebilir:
ulimit -n 65536
Ancak PHP için, limit değişiklikleri genellikle sorunu çözmez; başka yapılandırmaların da kontrol edilmesi gerekir. Laravel ekibi, bellek ve kaynak sızıntılarının önüne geçebilmek için –daemon modunu kullanımdan kaldırmıştır. Bunun yerine, kuyruk için supervisor yapılandırmasını düzenlemeliyiz:
2. Nasıl Hata Ayıklanır?
2. Nasıl Hata Ayıklanır?
Dosya tanımlayıcılarının ne tarafından işgal edildiğini kontrol edebiliriz. Belirli bir yöntemle, tüm işgalleri görebiliriz (ilk olarak sayım, ikinci olarak PID gösterilir):
lsof | awk '{print $2}' | sort | uniq -c | sort -nr | head -10
Kullanım sayısını gördükten sonra, dosyaları işgal eden yazılımı ve dolayısıyla problemin kaynağını bulmanın yolu açılır:
ps -p 1331 -o pid,ppid,cmd,user,%cpu,%mem,lstart
Ya da basitçe:
ps -p 1331 -f
Kaynak: Orijinal Makale


