Bir arızada kaybedilen zamanın çoğu yanlış kaydı okumakla geçer. Her biri farklı bir soruyu yanıtlar ve önce doğru dosyayı seçmek gerisini genellikle hızlandırır.

  • /var/log/nginx/error.log — web sunucusu işini yapamadı: yukarı akış reddetti, izin verilmedi, dosya bulunamadı.
  • /var/log/nginx/access.log — neyin istendiği ve neyin döndürüldüğü. NE ZAMAN sorusunun yanıtı buradadır.
  • /var/log/php8.3-fpm.log — ölen işçiler, havuz sorunları.
  • uygulama kaydı — kendi kodunuz. Yığın izi burada yaşar, başka hiçbir yerde değil.

Arızayı yeniden üretirken kaydı izleyin

tail -f /var/log/nginx/error.log

Onu açık bırakın, bozuk sayfayı yükleyin ve beliren şeyi okuyun. Var olan en etkili hata ayıklama adımı budur ve on saniye sürer.

Sorunun biçimini bulun

awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head
grep ' 500 ' /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head

İlki durum kodlarının dağılımını gösterir. İkincisi başarısız olan adresleri sıklıklarına göre sıralayarak adlandırır — ve genelde tek bir adres bunların çoğunu oluşturur.

Zamana göre daraltın

sed -n '/04\/Sep\/2026:14:0/,/04\/Sep\/2026:14:2/p' access.log | grep ' 50'

Önemli olan ilk oluştur

Bir patlamadaki İLK hatayı okuyun, sonuncuyu değil. Sonrakiler genellikle sonuçtur — biriken bir kuyruk, tükenen bir bağlantı havuzu — ve bir sonucu düzeltmek hiçbir şeyi değiştirmez.
Bir şey açıkça başarısız olduğu hâlde kayıt boşsa, istek o katmana hiç ulaşmamıştır. Bir katman dışarı çıkın: PHP hatası yoksa Nginx onu reddetmiştir; Nginx kaydı yoksa istek hiç varmamıştır.