Was ist Scalability Testing (Skalierbarkeitstest)?
Ein Skalierbarkeitstest misst, wie sich die Performance eines Systems verändert, wenn Sie Ressourcen hinzufügen oder entfernen: mehr Pods, mehr Knoten, größere Instanzen, mehr Datenbank-Replikate. Ziel ist zu erfahren, ob doppelte Infrastruktur den Durchsatz ungefähr verdoppelt (lineare Skalierung) oder ob der Gewinn abflacht (sublinear) oder durch Koordinationsaufwand sogar sinkt. Er zeigt, was zusätzliche Kapazität tatsächlich bringt.
Skalierbarkeitstest vs. Lasttest
Ein Lasttest misst das Verhalten bei einer festen Infrastrukturgröße. Ein Skalierbarkeitstest wiederholt denselben Lasttest bei mehreren Größen und vergleicht die Ergebnisse. Verwandt, aber anders: Der Kapazitätstest fragt, wie viel Last eine Konfiguration trägt, bevor sie ihre Ziele verfehlt.
Beispiel mit erfundenen Zahlen: Mit 1 Knoten liefert das System 1.000 Anfragen pro Sekunde bei einer p95-Latenz von 600 ms. Bei 8 Knoten wären linear 8.000 Anfragen pro Sekunde bei gleicher Latenz zu erwarten. Messen Sie 6.000, skaliert das System sublinear; steigt die Latenz bei 4.000 auf 1.200 ms, frisst die Koordination den Gewinn auf.
Horizontale und vertikale Skalierung
- Horizontal: Instanzen hinzufügen. Dieselbe Last gegen 1, 2, 4, 8 Instanzen hinter einem Load Balancer fahren.
- Vertikal: einer Instanz mehr CPU, Speicher oder Festplattendurchsatz geben. Dieselbe Last gegen kleine, mittlere und große Größen fahren.
Zustandslose Webschichten skalieren meist gut horizontal. Datenbanken und andere zustandsbehaftete Teile skalieren oft zuerst vertikal und brauchen später Replikate oder Sharding, und genau diese Teile lohnt es zu testen.
So führen Sie einen Skalierbarkeitstest durch
- Feste Last wählen. Eine skriptgesteuerte Ablaufmischung, ein Datenbestand, dieselben Last-Regionen, damit die Infrastruktur die einzige Variable ist.
- Skalierungsstufen festlegen. Zum Beispiel 1, 2, 4 und 8 Knoten oder drei Instanzgrößen.
- Jede Stufe bis zum stabilen Zustand fahren. Ermitteln Sie je Größe die höchste Last, die Antwortzeit- und Fehlerziele noch erfüllt.
- Kurve zeichnen. Durchsatz, Durchsatz pro Knoten und p95-Latenz über der Größe.
- Engpass am Knick der Kurve suchen. Prüfen Sie Datenbankverbindungen, Sperren, geteilte Caches, Netzwerk und Load Balancer.
Was gemessen wird
- Skalierungsfaktor: Durchsatz bei 2N geteilt durch Durchsatz bei N. Etwa 2,0 ist linear.
- Durchsatz pro Knoten: sollte ungefähr konstant bleiben. Ein Abfall deutet auf Overhead hin.
- p95-Latenz je Größe: sollte gleich bleiben oder besser werden, nicht steigen.
- Kosten pro Anfrage: das praktische Ergebnis, denn eine sublineare Kurve heißt, dass jeder weitere Knoten pro Arbeitseinheit mehr kostet.
- Autoscaling-Verhalten: wie lange neue Instanzen brauchen, bis sie helfen; das zeigt der Spike-Test.
Häufige Fehler
- Den Test zwischen den Läufen ändern. Anderes Skript, andere Regionen oder Datenmenge machen die Kurve wertlos.
- Nur die App-Schicht skalieren. Datenbank oder geteilter Cache werden zur Obergrenze und die Kurve flacht früh ab.
- Mit kaltem System starten. Wärmen Sie zuerst Caches und Connection-Pools auf, sonst wirkt die erste Stufe schlechter als sie ist.
- Grenzen des Lastgenerators. Sättigt der Generator, messen Sie ihn und nicht das System.
- Zu wenige Stufen. Zwei Größen zeigen ein Verhältnis, aber nicht, wo die Kurve knickt.
Tools und weiterführende Seiten
Dieselben Skripte laufen bei jeder Stufe, daher passt jedes Lasttest-Tool; üblich sind JMeter und k6. LoadFocus führt beide aus 25 Cloud-Regionen aus, sodass die Lasterzeugung über die ganze Serie konstant bleibt. Architekturspezifische Hinweise finden Sie im Beitrag zu Load Testing von Microservices in der Cloud (mehr zu Microservices) und im Überblick über Arten von Performance-Tests.
Häufige Fragen: Scalability Testing
Was ist der Unterschied zwischen Skalierbarkeitstest und Lasttest?
Ein Lasttest prüft die Performance bei einer festen Größe. Ein Skalierbarkeitstest fährt eine Reihe von Lasttests bei verschiedenen Größen, um zu sehen, wie sich die Performance mit den Ressourcen ändert.
Was ist lineare Skalierbarkeit?
Der Durchsatz wächst proportional zu den Ressourcen: doppelt so viele Knoten, ungefähr doppelt so viele Anfragen pro Sekunde bei gleicher Latenz.
Horizontale oder vertikale Skalierbarkeit: was soll ich testen?
Testen Sie, worauf Ihre Architektur setzt. Viele Systeme nutzen beides: horizontal für zustandslose Dienste, vertikal (dann Replikate oder Sharding) für Datenbanken.
Validiert ein Skalierbarkeitstest das Autoscaling?
Teilweise. Er zeigt, ob zusätzliche Kapazität etwas bringt. Wie schnell das Autoscaling reagiert, sehen Sie in Kombination mit einem Spike-Test, indem Sie die Latenz beobachten, während neue Instanzen starten.
Wie viele Skalierungsstufen brauche ich?
Mindestens drei oder vier, zum Beispiel 1, 2, 4 und 8 Knoten, damit Sie die Form der Kurve sehen und nicht nur ein Verhältnis.
Verwandte Begriffe
Verwandte LoadFocus-Tools
Setze dieses Konzept mit LoadFocus in die Praxis um, derselben Plattform, die alles antreibt, was du gerade gelesen hast.