Glossar · Performance
Stresstest
Englisch: Stress testing
Auch genannt: Stress Test, Belastungsgrenztest, Breakpoint-Test
Definition
Ein Performancetest, der die Last über das erwartete Niveau hinaus erhöht, um den Bruchpunkt zu finden, das Ausfallverhalten zu sehen und die anschließende Erholung zu prüfen.
Ein Stresstest treibt ein System bewusst Schritt für Schritt über seine erwartete Last hinaus, bis es seine Ziele nicht mehr erreicht oder ganz ausfällt. Während ein Lasttest fragt „Kommen wir mit der normalen Spitzenlast zurecht?“, fragt ein Stresstest „Wie viel halten wir aus, was bricht zuerst, und was passiert dann mit den Nutzern?“
Beispiel (k6 mit steigender Ankunftsrate)
Die Anfragerate wird stufenweise erhöht, unabhängig davon, wie schnell der Server antwortet:
import http from 'k6/http';
export const options = {
scenarios: {
breakpoint: {
executor: 'ramping-arrival-rate',
startRate: 50,
timeUnit: '1s',
preAllocatedVUs: 200,
maxVUs: 2000,
stages: [
{ duration: '5m', target: 200 },
{ duration: '5m', target: 400 },
{ duration: '5m', target: 800 },
{ duration: '3m', target: 0 }, // ramp down to observe recovery
],
},
},
};
export default function () {
http.get('https://staging.example.com/api/search?q=shoes');
}
Ein Executor mit Ankunftsrate sendet Anfragen auch dann mit der Zielrate weiter, wenn die Antworten langsamer werden. Das ist näher an echten Nutzern und macht eine Sättigung deutlicher sichtbar als eine feste Anzahl virtueller Nutzer.
Worauf Sie achten sollten
- Das Knie. Die Rate, ab der die Latenz-Perzentile stark ansteigen, während der Durchsatz abflacht. Das ist Ihre praktische Kapazität.
- Das Ausfallverhalten. Kontrollierte Degradation sieht aus wie schnelle
429- oder503-Antworten und abgeworfene Last. Ein schlechter Ausfall sieht aus wie Timeouts, Kaskadenausfälle in anderen Diensten, Datenkorruption oder abgestürzte Prozesse. - Erholung. Kehrt die Latenz nach dem Herunterfahren der Last von selbst zum Normalwert zurück, oder brauchen hängende Verbindungen und volle Queues einen Neustart?
- Der erste Engpass. CPU, Datenbank-Connection-Pool, Thread-Pool, Arbeitsspeicher oder eine nachgelagerte Abhängigkeit. Seine Behebung verschiebt den Bruchpunkt, daher werden Stresstests oft wiederholt.
Wie er sich vom Spike-Test unterscheidet
Ein Stresstest steigert die Last allmählich, um eine Grenze zu finden. Ein Spike-Test springt fast schlagartig von normaler auf sehr hohe Last, etwa bei einem Flash Sale oder einer Push-Benachrichtigung, und prüft, ob Autoscaling und Queues schnell genug reagieren.
Häufige Fehler
Stresstests gegen gemeinsam genutzte Umgebungen fahren, auf die andere Teams angewiesen sind; sie von einem einzigen Lastgenerator aus starten, der vor dem Server in die Sättigung geht; und bei „bei 800 rps ist es gebrochen“ aufhören, ohne festzuhalten, wie es gebrochen ist und ob es sich erholt hat.