HTTP 504 Gateway Timeout
Der Vermittler hat das Warten aufgegeben: Der Upstream-Server hat nicht innerhalb des Zeitlimits des Proxys geantwortet.
Was HTTP 504 bedeutet
HTTP 504 Gateway Timeout wird von einem Proxy, Load Balancer oder CDN ausgegeben, dessen Request an den Upstream-Server innerhalb seines Timeouts keine Antwort erhielt. Anders als bei 502 — wo der Upstream schlecht geantwortet hat — hat er bei 504 rechtzeitig überhaupt nicht geantwortet.
Die Grundursache ist fast immer etwas Langsames im Hintergrund: eine teure Datenbankabfrage, eine reaktionslose externe API oder ein Application-Thread-Pool, der durch Last ausgehungert ist.
Häufige Ursachen von 504-Fehlern
- Eine langsame Datenbankabfrage oder ein fehlender Index, wodurch ein Endpunkt länger braucht, als der Proxy erlaubt.
- Die Anwendung wartet auf eine externe API, die selbst langsam oder down ist.
- Backend gesättigt: Alle Worker beschäftigt, Requests stauen sich über das Timeout hinaus.
- Netzwerkprobleme zwischen Proxy und Upstream (Routing, Paketverlust, DNS).
- Timeout-Diskrepanz: Die App braucht legitim 60s, der Proxy bricht bei 30s ab.
So behebst du es als Besucher
- Versuche es nach einem Moment erneut — eine einzelne 504 ist oft nur ein langsamer Request, kein Ausfall.
- Prüfe bei einer von dir übermittelten Aktion (Zahlung, Bestellung), ob sie tatsächlich durchgegangen ist, bevor du es erneut versuchst.
So behebst du es als Entwickler
- Finde den langsamen Endpunkt in Access-Logs/APM: repariere die Abfrage, füge Indizes hinzu, cache das Ergebnis.
- Verlagere langsame Arbeit in Hintergrund-Jobs und antworte schnell mit einem Status, den der Client abfragen kann.
- Stimme die Timeout-Budgets durchgängig aufeinander ab (App < Proxy < CDN), damit das langsamste Glied bekannt und beabsichtigt ist.
- Füge Circuit Breaker um instabile externe APIs herum ein, statt sie deine Worker blockieren zu lassen.
Beispielantwort
HTTP/1.1 504 Gateway Timeout Server: nginx Content-Type: text/html <html><body><h1>504 Gateway Timeout</h1></body></html>
FAQ
Was ist der Unterschied zwischen 504 und 502?
504 bedeutet, dass der Upstream innerhalb des Timeouts nie geantwortet hat; 502 bedeutet, dass er mit etwas Ungültigem geantwortet hat.
Ist eine 504 ein Verbindungsproblem des Nutzers?
Nein — es liegt zwischen dem Proxy der Seite und ihrem Backend. Das Netzwerk des Nutzers ist in Ordnung.
Wurde mein übermittelter Request verarbeitet, wenn ich eine 504 bekommen habe?
Möglicherweise ja — das Timeout traf die Antwort, nicht zwangsläufig die Verarbeitung. Prüfe den Zustand, bevor du nicht-idempotente Aktionen blind wiederholst.