HTTP 504 Gateway Timeout

Aracı beklemekten vazgeçti: üst akış sunucusu, proxy'nin zaman sınırı içinde yanıt vermedi.

HTTP 504 ne anlama gelir

HTTP 504 Gateway Timeout, üst akış sunucusuna yaptığı istek zaman aşımı süresi içinde hiç yanıt almayan bir proxy, yük dengeleyici veya CDN tarafından verilir. Üst akışın kötü yanıt verdiği 502'nin aksine, 504'te zamanında hiç yanıt vermemiştir.

Kök neden neredeyse her zaman perde arkasında yavaş bir şeydir: pahalı bir veritabanı sorgusu, yanıt vermeyen bir harici API veya yük altında aç kalmış bir uygulama iş parçacığı havuzu.

504 hatalarının yaygın nedenleri

  • Yavaş bir veritabanı sorgusu veya eksik bir indeks, bir uç noktanın proxy'nin izin verdiğinden daha uzun sürmesine neden oluyor.
  • Uygulama, kendisi yavaş veya kapalı olan harici bir API'yi bekliyor.
  • Arka uç doymuş: tüm worker'lar meşgul, istekler zaman aşımını aşarak kuyruğa giriyor.
  • Proxy ve üst akış arasında ağ sorunları (yönlendirme, paket kaybı, DNS).
  • Zaman aşımı uyumsuzluğu: uygulama meşru olarak 60 saniyeye ihtiyaç duyuyor, proxy 30 saniyede kesiyor.

Bir ziyaretçi olarak nasıl düzeltilir

  • Bir an sonra yeniden deneyin — tek bir 504 genellikle bir kesinti değil, yavaş tek bir istektir.
  • Gönderdiğiniz bir eylem için (ödeme, sipariş), yeniden denemeden önce bunun gerçekten gerçekleşip gerçekleşmediğini kontrol edin.

Bir geliştirici olarak nasıl düzeltilir

  • Erişim günlüklerinde/APM'de yavaş uç noktayı bulun: sorguyu düzeltin, indeks ekleyin, sonucu önbelleğe alın.
  • Yavaş işleri arka plan işlerine taşıyın ve istemcinin yoklayabileceği bir durumla hızlıca yanıt verin.
  • Zaman aşımı bütçelerini uçtan uca hizalayın (uygulama < proxy < CDN), böylece en yavaş bağlantı bilinir ve kasıtlı olur.
  • Worker'larınızın takılmasına izin vermek yerine kararsız harici API'ler etrafına devre kesiciler (circuit breaker) ekleyin.

Örnek yanıt

HTTP/1.1 504 Gateway Timeout
Server: nginx
Content-Type: text/html

<html><body><h1>504 Gateway Timeout</h1></body></html>

SSS

504 ile 502 arasındaki fark nedir?

504, üst akışın zaman aşımı içinde hiç yanıt vermediği anlamına gelir; 502 ise geçersiz bir şeyle yanıt verdiği anlamına gelir.

504, kullanıcının bağlantı sorunu mudur?

Hayır — bu, sitenin proxy'si ile arka ucu arasındadır. Kullanıcının ağı sorunsuzdur.

Bir 504 aldıysam gönderdiğim istek işlendi mi?

Muhtemelen evet — zaman aşımı yanıtı etkiledi, mutlaka işlemi değil. İdempotent olmayan eylemleri körü körüne yeniden denemeden önce durumu kontrol edin.