PHP-FPM'de aralıklı 502: max_children mı, yavaş sorgu mu?

0 Yanıt 1 Görüntülenme
Puanlayanlar
Katılımcılar
Konuyu Açan #1
Trafik artınca ortaya çıkan aralıklı 502’ler insanı önce Nginx ayarlarına koşturuyor ama sorun çoğu zaman PHP-FPM havuzunun dolması ya da uygulamanın bazı isteklerde uzun süre beklemesi oluyor. Ben olsam rastgele timeout yükseltmeden önce şu üç yere bakarım:

  • Nginx hata kaydı: “upstream timed out” ile “connect() failed” aynı şey değil. İlki PHP yanıtının geciktiğine, ikincisi FPM soketine erişilemediğine işaret edebilir. Mesajın tamamını ve hatanın olduğu saati not etmek teşhisi epey daraltıyor.
  • FPM havuzu: Günlüklerde “server reached pm.max_children” benzeri bir uyarı varsa eşzamanlı çalışan süreçler limite dayanmış olabilir. Limiti artırmadan önce süreç başına bellek kullanımını ölçmek gerek; aksi hâlde sunucuyu belleksiz bırakıp daha büyük bir kesintiye yol açabilir.
  • Yavaş istekler: FPM slowlog’u etkinleştirip uzun süren PHP çağrılarını yakalamak, sorunun belirli bir endpoint’te mi yoksa veritabanı sorgusunda mı olduğunu gösterebilir. MySQL yavaş sorgu kaydı da burada işe yarar.


İlk bakış için Nginx error log ile PHP-FPM logunu aynı zaman aralığında karşılaştırıyorum. Sizde 502’lerin kök nedeni ne çıktı: FPM süreç sınırı mı, yoksa uygulamadaki yavaş bir sorgu ya da dış servis çağrısı mı?

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi