Redis-Cache-Überlastung legt Datenbank lahm
Redis hat unsere Datenbank gerettet. Bis es sie getötet hat.
Was passiert ist:
- Traffic-Spike: 50K Requests/Sekunde gegen eine einzelne Redis-Instanz
- Diese Rate allein hätte nicht wehgetan — Redis schafft bei einfachen GET/SET-Operationen weit mehr —, aber wir speicherten serialisierte Objekte von mehreren hundert KB und führten pro Request ein paar O(N)-Befehle aus
- Redis lief auf 100% CPU; die Antwortzeiten stiegen von unter einer Millisekunde auf hunderte Millisekunden
- Client-Timeouts schlugen an — und unser Cache-Client behandelte jeden Timeout als Cache Miss
- Die vollen 50K Requests/Sekunde fielen als Thundering Herd auf die Datenbank durch
- Die Datenbank war innerhalb von 30 Sekunden tot
Ursache:
Zwei Fehler, die sich gegenseitig verstärkten. Wir legten teure Payloads auf eine einzelne heiße Instanz, und wir hatten keinen Circuit Breaker: Als Redis langsam wurde, bedeutete „Timeout gleich Miss“, dass wir nicht kontrolliert degradierten — wir lenkten die gesamte Last auf genau das System um, das der Cache schützen sollte.
Die Lösung:
- Circuit-Breaker-Pattern: Ist Redis langsam, veraltete Daten ausliefern oder den Request fehlschlagen lassen — nicht zur Datenbank durchfallen
- Im Cache-Client Timeouts von Misses unterscheiden; nur echte Misses dürfen die Datenbank abfragen
- Redis Cluster für horizontale Skalierung; kleinere Werte, keine O(N)-Befehle auf heißen Pfaden
- Connection Pooling mit Timeouts und Load Shedding, sobald die Kapazitätsgrenze näher rückt
Den Cache-Tier auf Kapazität zu testen — nicht nur den App-Tier — ist genau aus diesem Grund ein Standardschritt in unseren DevOps- und Reliability-Engagements.
Lektion: Ihr Cache ist nicht nur eine Performance-Optimierung. Er ist eine kritische Komponente. Wenn er ausfällt, brauchen Sie einen Plan, der nicht darin besteht, Ihre Datenbank zu zerstören.
Incidents wie dieser sind vermeidbar. Unser AWS Managed Services-Team überwacht Kundenumgebungen 24/7 mit KI-gestütztem Monitoring und Senior Engineers am Pager — damit Geschichten wie diese im Archiv bleiben.