Zum Inhalt springen

Cache Stampede

Ein Cache Stampede entsteht, wenn gleichzeitige Anfragen dieselben Daten im Cache nicht finden und dieselbe teure Arbeit mehrfach starten.

Softwarearchitektur

Ein Cache Stampede entsteht, wenn viele Anfragen ungefähr gleichzeitig einen nicht verfügbaren Cacheeintrag benötigen und deshalb dieselbe Arbeit an der Datenquelle auslösen. Ein abgelaufener Eintrag oder ein leer gestarteter Cache kann so eine Lastspitze verursachen.

In einem fiktiven Dashboard fragen 100 gleichzeitige Aufrufe aus demselben berechtigten Datenumfang den Schlüssel summary:tenant-7 ab. Ist die Zusammenfassung nicht im Cache und wird nichts koordiniert, können viele identische Neuberechnungen starten.

Gemeinsame Anfragen bündeln

Request Coalescing bündelt solche Zugriffe: Eine laufende Neuberechnung wird für denselben Schlüssel und Datenumfang gemeinsam genutzt. Andere Anfragen warten kontrolliert auf das Ergebnis oder erhalten einen älteren Wert, falls die fachliche Aktualitätsregel dies erlaubt. Die Bündelung darf keine unterschiedlichen Benutzer- oder Berechtigungsbereiche zusammenführen.

Eine nur innerhalb eines Prozesses wirkende Sperre koordiniert nicht automatisch alle Server. Auch fehlgeschlagene Berechnungen und zu lange wartende Anfragen benötigen einen begrenzten Fehlerweg. Cache-Invalidierung entscheidet, wann ein Eintrag nicht mehr verwendbar ist; Stampede-Schutz regelt, wie die gleichzeitige Erneuerung beherrscht wird.

Quellen