5xx Durum Kodları Açıklandı: Sunucunuz Sorun Olduğunda
Bir 5xx durum kodu, altyapınızın başarısız olduğu anlamına gelir, ziyaretçinin isteğinin değil. Sunucu isteği kabul etti, anladı, ve sonra geçerli bir yanıt üretemedi, bu yüzden sitenizdeki her 5xx sahip olduğunuz bir olaydır.
5xx'i 4xx'ten ayıran nedir
RFC 9110, 5xx'i "Sunucu Hatası" olarak tanımlar: sunucu hata yaptığının veya istenen yöntemi gerçekleştiremediğinin farkındadır. Ayrım tamamen budur. Bir 404 "burada hiçbir şey yok" der. Bir 500 "burada bir şey var ve onu üretirken bozuldum" der.
İki sonuç izler. Birincisi, bir 5xx genellikle yeniden denenebilirdir, çünkü başarısız olan bileşen kurtarıldığında aynı istek bir saniye sonra pekala başarılı olabilir. İkincisi, arama motorları bir 5xx'i geçici bir sinyal olarak ele alır ve hemen dizinden çıkarmak yerine taramayı yavaşlatır, oysa günler süren kalıcı bir 5xx sonunda dizine eklenmiş sayfalarınıza mal olur.
Hangi atlama başarısız oldu
Bir 5xx kodunu isteğin nerede öldüğünün bir haritası olarak okuyun. Neredeyse her modern site uygulamanın önüne en az bir proxy koyar, bu yüzden kod size o sınırın hangi tarafının başarısız olduğunu söyler.
| Kod | Kimin ürettiği | Ne oldu |
|---|---|---|
| 500 Internal Server Error | Uygulamanın kendisi | Uygulama içinde işlenmemiş bir istisna veya beklenmeyen bir durum |
| 501 Not Implemented | Sunucu | İstek yöntemi hiç desteklenmiyor |
| 502 Bad Gateway | Proxy, CDN veya yük dengeleyici | Arka uç yanıt verdi, ama geçersiz bir şeyle, veya bağlantıyı kapattı |
| 503 Service Unavailable | Sunucu veya proxy, kasıtlı olarak | Aşırı yüklenmiş veya bakımda, ve işi kasıtlı olarak reddediyor |
| 504 Gateway Timeout | Proxy, CDN veya yük dengeleyici | Arka uç zamanında hiç yanıt vermedi |
| 505 HTTP Version Not Supported | Sunucu | İstekteki protokol sürümü desteklenmiyor |
502, 503 ve 504, en fazla teşhis değeri taşır, çünkü her biri aynı arka ucun farklı bir başarısızlığını adlandırır: geçersiz yanıt, reddedilen yanıt, yanıt yok. 502 Bad Gateway rehberi, tam hatayı tanımlayan proxy kayıt satırları dahil, bunlardan ilkini derinlemesine kapsar.
5xx yanıtlarının arkasındaki yaygın nedenler
- Uygulama çökmeleri. İşlenmemiş bir istisna, başarısız bir veritabanı bağlantısı veya beklenmeyen bir yerde bir null değer, bozuk kod yolunu dokunan hangi rotalarda olursa olsun 500 üretir.
- Çalışmayan arka uç süreci. Durdurulmuş bir uygulama sunucusu, ölü bir PHP-FPM havuzu veya sağlık kontrolünde başarısız olan bir konteyner, proxy'ye konuşacak hiçbir şey vermez, ki bu 502 olarak ortaya çıkar.
- Kaynak tükenmesi. Bellek yetersizliği, dosya tanımlayıcısı yetersizliği, işçi iş parçacığı yetersizliği veya veritabanı bağlantısı yetersizliği. Genellikle yük altında aralıklı hatalar olarak başlar ve sabit hale gelir.
- Yavaş bağımlılıklar. Yavaş bir sorgu, yavaş bir üçüncü taraf API veya soğuk bir başlangıç, yanıt süresini proxy'nin zaman aşımının ötesine iter ve 504'e dönüşür.
- Dağıtımlar ve yeniden başlatmalar. Eski sürecin durduğu ve yenisinin henüz hizmet vermeye başlamadığı herhangi bir pencere, bir 502 veya 503 patlaması üretir.
- Yapılandırma hataları. Yanlış bir akış yukarı adres, proxy ile arka uç arasında kötü bir TLS kurulumu, veya HTTPS bir porta HTTP konuşmak gibi bir protokol uyumsuzluğu.
- Disk dolu. Hafife alınan bir neden. Kayıtlar veya geçici dosyalar birimi doldurur, oturumlar veya önbellekler yazmayı durdurur, ve uygulama rastgele görünen şekillerde başarısız olmaya başlar.
Bir 5xx nasıl ele alınır
- Kodu ve kaynağını doğrulayın. Başlıkları doğrudan getirin ve hangi bileşenin yanıtı imzaladığına bakın:
Hatanın üzerindeki bircurl -sS -o /dev/null -D - https://example.com/Server:veya CDN başlığı, kenarın mı yoksa kaynağın mı onu ürettiğini söyler. - Proxy'yi atlayarak kaynağı doğrudan test edin. Arka uç kendi portunda 200 yanıt verirken genel URL 502 yanıt veriyorsa, hata proxy katmanında veya ikisi arasındaki bağlantıdadır.
- Sonra uygulama kaydını değil önce proxy hata kaydını okuyun. Ters proxy'ler hatayı kesin olarak adlandırır, örneğin
connect() failed (111: Connection refused)veyaupstream timed out, ki bu "arka uç çökük"ü hemen "arka uç yavaş"tan ayırır. - Sonra uygulama kaydını okuyun. Bir 500 için, yığın izi yanıttır. 502 ve 504 için uygulama genellikle hiçbir şey kaydetmez, ve o yokluk kendisi bilgilendiricidir.
- Ana bilgisayardaki kaynakları kontrol edin. Bellek, disk, bağlantı sayıları ve işçi doygunluğu. Trafik altında aralıklı 5xx, neredeyse her zaman ulaşılan bir sınırdır.
- Neyin değiştiğine bakın. Dağıtımlar, yapılandırma gönderimleri, sertifika yenilemeleri ve bağımlılık güncellemeleri, ani 5xx başlangıçlarının büyük bir payını oluşturur.
Aralıklı 5xx hatalarını yakalamak
5xx hataları genellikle aralıklıdır, ki bu onları elle yakalamayı zorlaştıran şeydir: yeniden yüklediğiniz sayfa çalışır, ve müşterinizin yüklediği çalışmamıştır. Zamanlanmış bir HTTP kontrolü sürekli çalışır ve siteyi sizden çok daha sık örnekler, bu yüzden bir hata serisi dağınık şikayetler yerine bir örüntü olarak görünür hale gelir. Birçok konumdan kontrol etmek de gerçek bir sunucu hatasını, dünyanın yalnızca bir kısmını etkileyen bir yönlendirme veya kenar sorunundan ayırır, ki dağıtılmış erişilebilirlik izlemesinin tek bir bakış açısı yerine bölgelere yayılmış kontrol noktaları kullanmasının nedeni budur. Başarısız olan kod bunun yerine 403, 404 veya 429 olarak ortaya çıkarsa, istek hiç bozuk bir arka uca ulaşmamıştır, ve 4xx aile rehberi doğru başlangıç noktasıdır.