ERR_EMPTY_RESPONSE: Nedenleri ve Çözümleri
ERR_EMPTY_RESPONSE, bağlantının kabul edildiği ama sunucunun düzgün bir HTTP yanıtı veya hatta bir hata sayfası bile değil sıfır bayt geri gönderdiği anlamına gelir. TCP el sıkışması başarılı oldu; yanıt vermesi gereken şey hiç yapmadı.
ERR_EMPTY_RESPONSE ne anlama gelir
Bu hata, istek yaşam döngüsünde reddedilmiş veya zaman aşımına uğramış bir bağlantıdan daha geç bir yerde oturur. Tarayıcı sunucuya başarıyla bağlanır, ve bir HTTPS isteğinde TLS el sıkışması genellikle de tamamlanır, ama istek gönderildikten sonra bağlantı hiçbir HTTP durum satırı, başlık veya gövde olmadan kapanır. Bu hala tam bir HTTP yanıtı olan bir 500 veya 502 hata sayfasından farklıdır; burada, geri hiçbir şey gelmediği için ayrıştırılacak hiçbir şey yoktur.
Bu, ulaşım bağlantısı dahil her katman doğru çalıştığından, ERR_EMPTY_RESPONSE'ı istemci tarafından çoğu bağlantı hatasından daha zor teşhis edilir hale getirir. Hata özellikle HTTP yanıtını üreten şeydedir: uygulama süreci, isteği işleyen çatı, veya iletmek ya da düzgün bir hata sayfası oluşturmak yerine soketi kapatan önündeki bir proxy.
Hata nasıl görünür
Chrome, bağlantı veri olmadan kapandığında "This site can't be reached ... ERR_EMPTY_RESPONSE" gösterir. curl aynı durumu düz terimlerle bildirir:
curl -v https://example.com/api/generate
* Connected to example.com (203.0.113.10) port 443
> GET /api/generate HTTP/1.1
> Host: example.com
*
* Empty reply from server
curl: (52) Empty reply from server
"Empty reply from server", curl'ün bu durum için tam ifadesidir, ve yanıt vermesi gereken şeyin yapmadığı sırada bağlantının kendisinin çalıştığının en net işaretidir.
ERR_EMPTY_RESPONSE'a ne sebep olur
- Bir worker süreci isteği işlerken çöktü. İşlenmemiş bir istisna, bellek yetersizliğinden öldürme, veya bir bölütleme hatası, herhangi bir yanıt yazılmadan önce bağlantıyı kapatabilir.
- Uygulama, sessizce kapanan bir proxy arkasında zaman aşımına uğradı. Bazı ters proxy yapılandırmaları, arka uç çok uzun sürdüğünde düzgün bir 502 veya 504 döndürmek yerine, bir hata sayfası göndermeden istemci bağlantısını kapatır.
- HTTPS portunda düz HTTP sunuluyor, ya da tersi. Düz HTTP sunan bir porta TLS konuşan bir istemci, ya da tersi, istemcinin protokol katmanının ayrıştırabileceği geçerli bir yanıt almaz, ve bu genellikle net bir protokol hatası yerine boş bir yanıt olarak yüzeye çıkar.
- Bir tarayıcı uzantısı veya yerel proxy yanıta müdahale ediyor. Reklam engelleyiciler, gizlilik uzantıları, veya bir yanıtı inceleyen ve bazen yanlış işleyen kurumsal bir proxy, onu hiçliğe indirebilir.
- Bir yük dengeleyici sağlık kontrolü, arka ucu istek ortasında sağlıksız işaretliyor, yanıt bitmeden önce o arka uca bağlantıyı kapatıyor.
Kimin hatası olduğunu nasıl anlarsınız
Önce tarayıcı uzantılarını devre dışı bırakın veya bir gizli pencere deneyin; istemci tarafı bir uzantı, daha yaygın ve elemesi en kolay nedenlerden biridir. Uzantılar kapalıyken boş yanıt devam ederse, yerel bir proxy'yi elemek için ikinci bir cihaz veya ağdan test edin. Birden fazla dış konumdan tutarlı bir şekilde oluyorsa, neden sunucu veya bir uygulama çökmesidir. Birden fazla kontrol noktasından aynı anda bir HTTP kontrolü çalıştırmak, boş yanıtın evrensel mi yoksa bir istemciye, uzantıya veya ağa mı bağlı olduğunu doğrular.
ERR_EMPTY_RESPONSE nasıl düzeltilir
Bir ziyaretçiyseniz
- Bir reklam engelleyicinin veya gizlilik uzantısının yanıta müdahale etmesini elemek için uzantıları devre dışı bırakılmış bir gizli veya özel pencere deneyin.
- Herhangi bir yerel proxy veya VPN'i devre dışı bırakın ve yeniden deneyin, çünkü bazıları bazen yanıtları iletmek yerine ele geçirip yanlış işler.
- Site için tarayıcı önbelleğini temizleyin; önbelleğe alınmış, bozuk bir bağlantı durumu, yeniden denemede bu hata olarak arada bir yeniden ortaya çıkabilir.
- Bekleyin ve yeniden yükleyin. Neden sunucuda çöken bir worker süreciyse, bir süreç denetleyicisi tipik olarak onu saniyeler içinde yeniden başlatır.
Siteyi çalıştırıyorsanız
- Başarısız isteğin aynı zaman damgasında bir çökme için uygulama günlüklerini kontrol edin; işlenmemiş bir istisna veya bellek yetersizliğinden öldürme en yaygın nedendir ve genellikle net bir iz bırakır.
- Doğru protokolün her porta bağlı olduğunu doğrulayın. Doğrudan bir kontrolle 443 portunun gerçekten TLS sunduğunu ve 80 portunun düz HTTP sunduğunu, tersini değil, doğrulayın:
curl -v https://example.com:443/ curl -v http://example.com:80/ - Ters proxy'nin zaman aşımı davranışını gözden geçirin. nginx'te,
proxy_read_timeout'u aşan bir arka uç yine de bir 504 döndürmelidir, bu yüzden düzgün bir hata sayfası yerine boş bir yanıt genellikle yığında daha düşük bir yerde bağlantıyı kapatan bir şey olduğu anlamına gelir. - Başarısızlık zamanı civarında sağlıksız işaretlenen bir arka uç için yük dengeleyici ve sağlık kontrolü günlüklerini kontrol edin, ki bu o örneğe uçuştaki bağlantıları kapatabilir.
- Bir çökme doğrulanırsa etkilenen worker'ı veya hizmeti yeniden başlatın, ve yeniden başlatmadan sonra aynı hatanın tekrarı için günlükleri yakından izleyin.
ERR_EMPTY_RESPONSE nasıl önlenir
Belirli bir istek yükü veya bir bellek sıçraması gibi özel koşullar altındaki bir worker çökmesi, gerçek ziyaretçiler için zamanlamalı olarak başarısız olmaya devam ederken bir manuel testi geçecek kadar aralıklı olabilir. 158 şehirdeki 300'den fazla kontrol noktasından düzenli bir aralıkla durum kodunu ve yanıt gövdesini kontrol eden sürekli HTTP izlemesi, tek bir manuel kontrolün muhtemelen kaçıracağı bir boş yanıt kalıbını yakalar, ve e-posta, SMS, sesli arama, Slack, Telegram ve daha fazlasıyla uyarır.
İlgili hatalar
- ERR_CONNECTION_RESET, çalışan bir bağlantıyı da erken bitirir, ama sessiz bir kapatma yerine açık bir sıfırlamayla.
- 502 Bad Gateway, bu hatanın anlattığı boş yanıtın aksine, bir proxy'den kasıtlı olarak gönderilen düzgün bir HTTP hata yanıtıdır.
- This site can't be reached, Chrome'un tek bir başlık altında gruplandırdığı bağlantı hatalarının tam kümesini kapsar.
Sık sorulan sorular
ERR_EMPTY_RESPONSE bir 502 hatasıyla aynı mı?
Hayır. Bir 502, bir proxy tarafından kasıtlı olarak gönderilen bir durum satırı, başlıklar ve genellikle bir gövdeye sahip tam bir HTTP yanıtıdır. ERR_EMPTY_RESPONSE, hiç HTTP yanıtı gönderilmediği, sadece kapalı bir bağlantı olduğu anlamına gelir.
Bu neden sadece belirli bir sayfada olur?
Diğerleri gayet iyi yüklenirken bu hatayı sürekli olarak tetikleyen bir sayfa, genellikle genel bir sunucu veya ağ sorunu yerine o belirli sayfanın veya API uç noktasının kullandığı kod yolundaki bir çökmeye işaret eder.
Bir reklam engelleyici gerçekten bu hataya neden olabilir mi?
Evet. Bazı reklam engelleyiciler ve gizlilik uzantıları yanıtları ele geçirir ve yeniden yazar, ve bir hata veya agresif bir kural, meşru bir yanıtı temiz bir şekilde engellemek yerine bazen onu hiçliğe indirebilir.
ERR_EMPTY_RESPONSE, verimin kaybolduğu anlamına mı gelir?
Bir GET isteği için mutlaka değil, ama veriyi değiştiren bir form gönderimi veya bir API çağrısı için, yeniden denemeden önce eylemin sunucuda gerçekten tamamlanıp tamamlanmadığını kontrol edin, çünkü istemci boş bir yanıttan isteğin işlenip işlenmediğini söyleyemez.
curl neden bir hata kodu yerine "Empty reply from server" diyor?
Çünkü bir durum kodunu okuyacak hiçbir HTTP yanıtı yoktur. curl'ün kendi ifadesi, HTTP protokolünün kendisinin bir katman altındaki ulaşım düzeyindeki olayı, veri olmadan kapalı bir bağlantıyı, tanımlar.
Bağlantıyı sunucu yerine kendi ağım kapatıyor olabilir mi?
Sunucu tarafı bir nedenden daha az yaygındır ama olur. Sabit bir boşta kalma süresinden sonra uzun süren bağlantıları sonlandıran kurumsal bir proxy veya güvenlik duvarı aynı belirtiyi üretebilir; aynı isteği farklı bir ağdan test etmek bunu hızla eler.