Festlegen von Baselines für Auslastungstests
Nachdem Sie nun die Auslastungstests und Schwellenwerte definiert haben, wollen wir sie zum Erstellen Ihrer Baselines verwenden.
Eine Baseline ist eine Reihe von Kriterien für Metriken, die Sie verwenden, um zu bewerten, ob ein Test fehlgeschlagen ist oder erfolgreich war. Ihre Kriterien können beispielsweise wie folgt aussehen:
- Durchschnittliche Anforderungen pro Sekunde.
- Fehlerrate.
- Maximale Antwortzeit.
Um Baselines für Auslastungstests einzurichten, müssen Sie:
die Baselines und Testkriterien für einzelne Benutzerflows und die Gesamtlösung definieren.
die Schwellenwerte für regelmäßige Ausführungen anpassen, um zu überprüfen, ob die Anwendung weiterhin die erwartete Leistung liefert und keine Fehler erzeugt.
Verwenden Sie eine separate Baseline für Chaostests, die erwartete Spitzen bei Fehlerraten und eine vorübergehend verringerte Leistung toleriert.
Diese Aktivität ist kontinuierlich und muss regelmäßig durchgeführt werden. Beispielsweise müssen Sie die Baselines überprüfen, nachdem Sie neue Features eingeführt oder Dienst-SKUs geändert haben.
Verwenden von Azure Load Testing zum Auswerten von Schwellenwerten
Während der Entwicklungsphase sind die Leistung von Komponenten und die Ressourcenanforderungen oft nicht klar bekannt. Mit Auslastungstests können Sie die erwartete Leistung der Gesamtlösung und ihrer Komponenten identifizieren, einschließlich des Verhaltens bei der horizontalen Skalierung. Sie können Sie auch dabei unterstützen, die Schwellenwerte zu identifizieren, die für die Erstellung Ihrer Baseline zu erwarten sind.
Stellen Sie die folgenden Fragen, und bewerten Sie sie regelmäßig neu:
- Wie lange dauert der Abschluss eines einzelnen Vorgangs, Benutzerflows oder API-Aufrufs?
- Wie viele Anforderungen, Vorgänge und gleichzeitige Benutzer kann eine Komponente pro Sekunde verarbeiten?
- Wie viele Ressourcen werden verbraucht?
- Wie wirken sich 10, 50 und 100 gleichzeitige Benutzer auf die zugrunde liegende Infrastruktur und den Back-End-Dienst aus?
- Wann sollten die Komponenten horizontal hoch- und herunterskaliert werden?
Die Antworten führen zu Tests und Schwellenwerten. Die Anforderungen pro Sekunde, die Antwortzeit und der Fehlerprozentsatz sind alle geeignete Beispiele für Schwellenwerte.
Nachdem Sie die Details notiert haben, verwenden Sie Werte, um die Leistung der Gesamtlösung und der zugehörigen Komponenten konsistent zu analysieren und zu bewerten. Verwenden Sie auch die Baseline, um die Auswirkungen von Änderungen und Abweichungen von der erwarteten Leistung zu identifizieren.
Wenn Sie die Tests ausführen, haben Sie möglicherweise unterschiedliche Anforderungen für spezielle Anwendungsfälle, wie z. B. eine fehlerhafte Komponente oder eine Auslastungsspitze. In diesen Fällen können höhere Fehlerraten oder weniger Anforderungen pro Sekunde erwartet werden und akzeptabel sein. Sie können eine separate Baseline, die angepasste Schwellenwerte enthält, verwenden, um diesen Situationen gerecht zu werden. Zum Beispiel:
- Szenarien mit hoher Auslastung, in denen ein horizontaler Skalierungsvorgang erwartet wird und erforderlich ist. Es kann zu einer vorübergehenden Leistungsbeeinträchtigung kommen, bis der Vorgang abgeschlossen ist.
- Chaosexperimente als Teil einer Pipeline für die fortlaufende Validierung. Es ist mit einer höheren Fehlerrate zu rechnen, bis die Anwendung mithilfe der Resilienzmaßnahmen geheilt werden kann oder bis ein Failover in einer anderen Region ausgeführt wird.
Verwenden Sie Azure Load Testing, um auszuwerten, welche Leistung Ihr System bei definierten Schwellenwerten erbringt. Der Dienst verfügt über eine integrierte Testkriterienfunktion. Das heißt, Sie können Kriterien angeben, die ein Auslastungstest bestehen muss.
Sie können Testkriterien verwenden, um unterschiedliche Baselines zu implementieren, wie im folgenden Beispielscreenshot gezeigt.
Sie können diese Testkriterien in JSON angeben und ihrem Auslastungstest mithilfe der API hinzufügen. Hier sehen Sie ein Beispiel:
[
{
"passFailMetrics": {
"<guid-1>": {
"clientmetric": "requests_per_sec",
"aggregate": "avg",
"condition": "<",
"value": 1200.0,
"actualValue": 0.0,
"result": null,
"action": "continue"
},
"<guid-2>": {
"clientmetric": "response_time_ms",
"aggregate": "avg",
"condition": ">",
"value": 75.0,
"actualValue": 0.0,
"action": "continue"
},
"<guid-3>": {
"clientmetric": "error",
"aggregate": "percentage",
"condition": ">",
"value": 0.0,
"actualValue": 0.0,
"action": "continue"
}
}
}
]
Ein weiterer wichtiger Aspekt der fortlaufenden Validierung ist das Einschleusen von Tests, die reale Probleme simulieren. In der nächsten Lerneinheit erfahren Sie, wie Sie Ihrem Validierungsprozess Chaosexperimente hinzufügen.