HTTP Status 504 - Gateway Timeout

Der HTTP-Status-Code 504 Gateway Timeout signalisiert, dass Gateway oder Proxy keine rechtzeitige Response vom Upstream-Server erhalten hat. Backend antwortete nicht innerhalb des Timeout-Fensters. Unterscheidet sich von 408 (Client Timeout) – hier ist Backend zu langsam.

Typ

Response-Status-Code

Syntax

Der Status Code wird von Gateway bei Upstream-Timeout zurückgegeben.

http
HTTP/1.1 504 Gateway Timeout

Direktiven

Der 504 Gateway Timeout Status Code wird für Upstream-Timeouts verwendet.

Upstream Timeout
Gateway wartete zu lange auf Response von Upstream-Server. Backend Processing überschritt configured Timeout (z.B. 30s, 60s).
Long-Running Operations
Typisch bei komplexen Queries, Report-Generierung oder langläufigen Backend-Operationen. Backend arbeitet noch, aber Gateway gibt Timeout zurück.
Retry Consideration
Client sollte vorsichtig retrien, da Backend möglicherweise noch Processing durchführt. Idempotente Operations (GET, PUT, DELETE) können sicher retried werden.

Beispiele

Nachfolgend finden Sie praktische Anwendungsbeispiele für Status 504.

Beispiel 1 Database Query Timeout

http
GET /api/reports/complex HTTP/1.1
Host: api.example.com

HTTP/1.1 504 Gateway Timeout
Content-Type: application/json

{
  "error": "gateway_timeout",
  "message": "Backend did not respond within 60 seconds",
  "suggestion": "Try a more specific date range or use async report generation",
  "async_endpoint": "POST /api/reports/async"
}

Beispiel 2 External API Timeout

http
POST /api/payment HTTP/1.1
Host: api.example.com
Content-Type: application/json

{"amount": 99.99}

HTTP/1.1 504 Gateway Timeout
Content-Type: application/json

{
  "error": "payment_gateway_timeout",
  "message": "Payment provider did not respond in time",
  "transaction_id": "txn-abc-123",
  "action": "Check transaction status at /api/transactions/txn-abc-123"
}

Beispiel 3 Microservice Chain Timeout

http
GET /api/aggregated-data HTTP/1.1
Host: api.example.com

HTTP/1.1 504 Gateway Timeout
Content-Type: application/json
X-Timeout-Service: inventory-service

{
  "error": "upstream_timeout",
  "message": "Dependency service timeout",
  "timeout_service": "inventory-service",
  "timeout_duration": "30s"
}

Gateway Timeout Flow

504 Gateway Timeout bei langläufiger Backend-Operation

Vorteile für die Systemarchitektur

  • Timeout Protection: Gateway schützt Clients vor indefinite Waits. Gibt rechtzeitig Error zurück statt Connection indefinitely open zu halten.
  • Clear Error Attribution: 504 signalisiert explizit, dass Backend zu langsam ist (nicht Gateway, nicht Client). Hilft bei Debugging und Performance-Tuning.
  • Async Pattern Motivation: Häufige 504-Errors motivieren Wechsel zu Async-Patterns (202 Accepted mit Polling). Langläufige Operations sollten nicht synchron blockieren.

Spezifikation

RFC 9110, Section 15.6.5 – HTTP Semantics https://www.rfc-editor.org/rfc/rfc9110.html#name-504-gateway-timeout

Weitere Spezifikationen

HTTP Status 502 - Bad Gateway, HTTP Status 408 - Request Timeout