Timeout-Handling umfasst alle Strategien, mit denen ein System wartende Aufrufe zeitlich begrenzt, um hängende Requests, erschöpfte Ressourcen und kaskadierende Fehler zu vermeiden. Ein Timeout legt fest, wie lange ein Aufruf maximal dauern darf, bevor er als fehlgeschlagen gilt.

Arten von Timeouts

Man unterscheidet typischerweise Connect-, Read- und Write-Timeouts: Der Connect-Timeout begrenzt den Verbindungsaufbau, der Read-Timeout die Wartezeit auf Antwortdaten, der Write-Timeout das Senden von Daten. Jede Phase braucht einen eigenen, realistischen Grenzwert.

Fail Fast statt endloses Warten

Ein zu großzügiger Timeout ist gefährlich: Wartende Requests belegen Threads und Verbindungen, bis der Connection-Pool erschöpft ist — ein einzelner langsamer Dienst kann so das gesamte System lahmlegen. Besser ist Fail Fast: Aggressive Timeouts, dann bei transienten Fehlern ein Retry mit Backoff. Erkennt ein Dienst wiederholt Timeouts, öffnet ein Circuit Breaker und schützt das System vor weiteren wartenden Aufrufen.

Timeout-Werte richtig wählen

Die Werte orientieren sich an der erwarteten Latenz: Für interne Aufrufe sind wenige hundert Millisekunden üblich, für externe Dienste mehrere Sekunden. Gemessen wird gegen Perzentile wie p95 oder p99, nicht gegen den Durchschnitt. Zu kurze Werte erzeugen Fehlalarme, zu lange Werte blockieren Ressourcen — das richtige Verhältnis findet man nur mit Beobachtung im Betrieb.

Verwandte Grundlagen: Circuit Breaker, Idempotenz, Graceful Shutdown.