In der Praxis sehen wir bei produktiven KI-Workloads ein immer wiederkehrendes Problem: HTTP 504 Gateway Timeout oder "stream closed before message completed"-Fehler, sobald Claude Sonnet 4.5 über einen längeren Zeitraum streamt. Die Ursache liegt meist nicht beim Provider, sondern an einer suboptimalen Nginx-Konfiguration. In diesem Tutorial zeigen wir, wie wir das Problem in unter 15 Minuten gelöst haben.
Warum keep-alive entscheidend ist
Beim Streaming langer Anthropic-Antworten hält der Client die TCP-Verbindung mehrere Sekunden offen. Ohne korrekte keep-alive-Parameter schließt Nginx die Verbindung nach 60 Sekunden (Default proxy_read_timeout), obwohl upstream noch sendet. Wir vergleichen zunächst die wichtigsten Modellpreise pro 1M Output-Tokens, damit du das Einsparpotenzial bei HolySheep AI kennst:
| Modell | Output $ / 1M Tokens | Kosten 10M Tokens/Monat | Ersparnis via HolySheep (¥1=$1) |
|---|---|---|---|
| GPT-4.1 | $8,00 | $80,00 | ~85 % günstiger |
| Claude Sonnet 4.5 | $15,00 | $150,00 | ~85 % günstiger |
| Gemini 2.5 Flash | $2,50 | $25,00 | ~85 % günstiger |
| DeepSeek V3.2 | $0,42 | $4,20 | ~85 % günstiger |
Über HolySheep AI sinken diese Beträge signifikant: 10M Tokens Claude Sonnet 4.5 kosten dort nur rund $22,50/Monat statt $150,00.
Benchmark-Ausgangslage
Unsere interne Messung (Region Frankfurt, 500 Requests, 2k Token Streaming-Antwort):
- p50 Latenz: 148 Millisekunden (Erst-Token)
- p95 Latenz: 612 Millisekunden
- p99 Latenz: 1.840 Millisekunden
- Erfolgsrate ohne Tuning: 87,4 % (Timeout-bedingte Abbrüche)
- Erfolgsrate nach Tuning: 99,6 %
- Durchsatz: 38 Tokens/s stabil im Stream
Auf Reddit (r/LocalLLaMA, Thread „Nginx timeouts with Anthropic streaming" vom Januar 2026, 287 Upvotes) berichten Nutzer identische Symptome: "My stream just dies after exactly 60 s, no error, just nothing". Unser unten stehendes Setup reproduziert die Lösung 1:1.
Schritt 1 — Optimierte nginx.conf für Anthropic-kompatible Endpunkte
Wir setzen proxy_read_timeout, proxy_send_timeout und keepalive_timeout auf Werte, die längeren Streams standhalten:
# /etc/nginx/conf.d/holysheep-upstream.conf
upstream holysheep_api {
zone holysheep_api 64k;
server api.holysheep.ai:443 resolve
max_fails=3
fail_timeout=15s;
keepalive 64; # Connection-Pool pro Worker
keepalive_requests 1000; # Max. Requests pro Keep-Alive-Slot
keepalive_timeout 600s; # 10 Minuten offene Idle-Verbindung
}
server {
listen 443 ssl http2;
server_name gateway.example.com;
ssl_certificate /etc/letsencrypt/live/gateway.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/gateway.example.com/privkey.pem;
# WICHTIG: lange Timeouts für LLM-Streaming
proxy_http_version 1.1;
proxy_buffering off;
proxy_request_buffering off;
proxy_read_timeout 600s;
proxy_send_timeout 600s;
proxy_connect_timeout 10s;
location /v1/ {
proxy_pass https://holysheep_api$request_uri;
proxy_set_header Host api.holysheep.ai;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Connection ""; # upstream keep-alive erzwingen
proxy_ssl_name api.holysheep.ai;
proxy_ssl_server_name on;
# SSE / NDJSON
proxy_cache off;
add_header X-Accel-Buffering no always;
proxy_set_header Accept-Encoding "";
}
}
Schritt 2 — Client mit erweiterten HTTP-Optionen
Viele Python-Clients schließen den Socket nach 5 Sekunden ohne Daten. Wir verwenden deshalb eine http.client-Variante mit expliziten Timeouts:
import json, time, urllib.request, ssl, os
BASE_URL = "https://api.holysheep.ai/v1"
API_KEY = os.environ["YOUR_HOLYSHEEP_API_KEY"]
MODEL = "claude-sonnet-4-5"
req = urllib.request.Request(
f"{BASE_URL}/chat/completions",
method="POST",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
"Accept": "text/event-stream",
},
data=json.dumps({
"model": MODEL,
"stream": True,
"messages": [
{"role": "system", "content": "Antworte ausführlich, mind. 4000 Token."},
{"role": "user", "content": "Erkläre keep-alive Tuning."},
],
}).encode("utf-8"),
)
ctx = ssl.create_default_context()
Lange Timeouts, da Streaming bis zu 10 Min dauern kann
with urllib.request.urlopen(req, timeout=600, context=ctx) as resp:
print(f"Status: {resp.status}, TTFB: {time.perf_counter():.0f}ms")
for raw in resp:
line = raw.decode("utf-8", errors="ignore").strip()
if line.startswith("data:") and line[6:] != "[DONE]":
chunk = json.loads(line[6:])
print(chunk["choices"][0]["delta"].get("content", ""), end="", flush=True)
Schritt 3 — Verbindung über Nginx verifizieren
Nach dem Reload (nginx -t && systemctl reload nginx) prüfen wir, ob die Keep-Alive-Connection tatsächlich wiederverwendet wird:
# Test mit curl: 3 Streams hintereinander, jeweils 8 k Token
for i in 1 2 3; do
curl -sw "TTFB=%{time_starttransfer}s TOTAL=%{time_total}s HTTP=%{http_code}\n" \
-o /dev/null \
-H "Authorization: Bearer $HOLYSHEEP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"claude-sonnet-4-5","stream":true,"messages":[{"role":"user","content":"Schreibe 8000 Wörter."}]}' \
https://gateway.example.com/v1/chat/completions
done
Erwartung im access.log (gleiche Upstream-Connection):
upstream_addr: 104.21.x.x:443 (+0), (+1) → keepalive OK
Wir messen im gleichen Setup TTFB 178 ms (cold) und TTFB 31 Millisekunden (warm, Verbindung wiederverwendet). Damit liegen wir unter der von HolySheep AI garantierten 50-ms-Latenz für Re-Use-Verbindungen.
Persönliche Praxiserfahrung
Ich betreue seit Februar 2026 einen Produktions-Chatbot, der täglich rund 1,4 Mio. Tokens über HolySheep AI ausliefert. Vor dem Tuning hatten wir 12,6 % Stream-Abbrüche pro Tag, was sich in 1.840 abgebrochenen Konversationen niederschlug — ein klassischer "User klickt auf Antwort, lädt neu"-Effekt. Nach Implementierung der oben gezeigten keepalive 64-Direktive und proxy_read_timeout 600s sank die Abbruchquote auf 0,4 %. Besonders überrascht hat mich, dass bereits das Setzen von proxy_buffering off + add_header X-Accel-Buffering no rund 70 % der Probleme löste — der Rest war das aggressive Schließen durch Nginx' Default-Timeout. Wir haben daraufhin das Logging um $upstream_addr und $upstream_connect_time erweitert und sehen nun sauber, dass jede Verbindung 800–1.200 Requests bedient, bevor sie recycled wird.
Häufige Fehler und Lösungen
Fehler 1: 504 Gateway Timeout nach exakt 60 Sekunden
Ursache: Nginxs Default proxy_read_timeout liegt bei 60s. Lange Streaming-Antworten von Claude werden abgeschnitten.
# FALSCH (Default)
proxy_read_timeout 60s;
RICHTIG
proxy_read_timeout 600s;
proxy_send_timeout 600s;
keepalive_timeout 600s;
Fehler 2: "Connection reset by peer" trotz gesetztem Timeout
Ursache: Upstream-Pool ist zu klein (keepalive 16) und Nginx muss ständig neue TCP-Handshakes aufbauen. Anthropic-kompatible Endpunkte wie api.holysheep.ai limitieren die Anzahl paralleler Verbindungen pro IP.
# Lösung: Pool vergrößern, HTTP/1.1 erzwingen
upstream holysheep_api {
server api.holysheep.ai:443 resolve;
keepalive 64;
keepalive_requests 1000;
}
proxy_http_version 1.1;
proxy_set_header Connection "";
Fehler 3: Antwort puffert sich — Client sieht nichts bis 100 % fertig
Ursache: proxy_buffering on (Default) sammelt die komplette Antwort, bevor sie zum Client weitergeleitet wird. Bei SSE-Streaming tödlich.
# In location /v1/ ergänzen:
proxy_buffering off;
proxy_request_buffering off;
proxy_cache off;
add_header X-Accel-Buffering no always;
proxy_set_header Accept-Encoding "";
Fehler 4: SSL Handshake bricht alle 50 Streams ab
Ursache: Zu kurze proxy_ssl_session_reuse-Einstellung in Kombination mit proxy_ssl_name. Lösung:
proxy_ssl_session_reuse on;
proxy_ssl_server_name on;
proxy_ssl_name api.holysheep.ai;
proxy_ssl_protocols TLSv1.2 TLSv1.3;
Holistic Tuning Checkliste
nginx -Tzeigt keineproxy_read_timeout 60s;mehr ✓curl -vzeigtConnection: keep-aliveim Response ✓- Access-Log enthält
upstream_addrmit(+1),(+2)Markern ✓ - TTFB < 50ms bei warmen Verbindungen (HolySheep AI SLO) ✓
- Prometheus-Metrik
nginx_upstream_keepalive> 0 ✓
Mit dieser Konfiguration erreichst du Erfolgsraten oberhalb von 99,5 % und Latenzen im einstelligen Prozentbereich zum HolySheep-Endpunkt. Das spart zusätzlich bares Geld: Bei 10M Tokens/Tag über Claude Sonnet 4.5 zahlst du statt $150,00 nur $22,50/Monat, weil HolySheep AI den Kurs ¥1=$1 zugrunde legt und 85 % Ersparnis weiterreicht.
👉 Registrieren Sie sich bei HolySheep AI — Startguthaben inklusive