Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für die Empfehlung zur Leistungseffizienz der Azure Well-Architected Framework-Checkliste:
| PE:06 | Optimieren Sie die Leistung Ihrer Workload, indem Sie regelmäßig in einer produktionsähnlichen Umgebung testen, um sicherzustellen, dass Ihre Workload die gewünschten Leistungsziele erreicht und Ihre Geschäftsziele erreicht. |
|---|
Leistungstests sind eine nicht funktionsfähige Testpraxis, die verwendet wird, um zu bewerten, wie sich eine Workload unter verschiedenen Bedingungen verhält. Sie hilft Ihnen dabei, Leistungsbeeinträchtigungen frühzeitig zu erkennen, Probleme proaktiv zu beheben und eine fortgesetzte Ausrichtung mit Vereinbarungen auf Serviceebene sicherzustellen.
Wenn Sie Reaktionszeiten, Durchsatz, Ressourcennutzung und Stabilität messen, sammeln Sie Nachweise, dass Ihre Workload den definierten Zielen konsistent entspricht und das Leistungsniveau liefert, das Ihr Unternehmen benötigt.
Die wichtigsten Strategien in diesem Artikel basieren auf den grundlegenden Testpraktiken, die in OE:09 Architekturstrategien für Tests beschrieben werden. Es wird empfohlen, diesen Artikel zuerst zu überprüfen. Die Empfehlungen in diesem Leitfaden sind auf die Leistung ausgerichtet und konzentrieren sich auf die Erreichung von Leistungszielen, damit Ihre Workloads weiterhin an sich entwickelnde Geschäftsziele ausgerichtet bleiben.
In der folgenden Tabelle werden wichtige Leistungsbegriffe definiert, die in diesem Artikel verwendet werden.
| Begriff | Definition |
|---|---|
| Leistungsziele | Die spezifischen Leistungswerte, die eine Workload erfüllen muss, z. B. Antwortzeit, Durchsatz oder Anzahl gleichzeitiger Benutzer. |
| Leistungsschwellenwerte | Die Grenzen, die eine akzeptable Leistung von einer inakzeptablen Leistung für eine bestimmte Metrik trennen. |
| Leistungsbudget | Der Teil eines Gesamtleistungsziels, das jeder Ebene oder Komponente einer Workload zugeordnet ist. |
| Fehlerbudget | Der zulässige Grad an Fehlern oder Ausfällen, abgeleitet von SLOs. |
| Akzeptanzkriterien | Die Bedingungen, die ein Testergebnis erfüllen muss, damit die Arbeitsauslastung ihre Leistungsanforderungen erfüllt. |
| Hypothesengesteuerte Experimente | Eine Testmethode, bei der Sie eine Vorhersage zur Leistung angeben, sie anhand eines Basisplans testen und mit gemessenen Ergebnissen überprüfen. |
| Leistungsbasislinie | Eine Reihe von Metriken, die das Verhalten einer Workload unter normalen Bedingungen darstellen, die durch Tests überprüft werden. |
| Synthetische Transaktionen | Skriptgesteuerte Anforderungen, die echte Benutzerinteraktionen simulieren, um die Systemleistung unter kontrollierten Bedingungen zu messen. |
| Leistungsregression | Ein Leistungsrückgang gegenüber einem etablierten Basisplan, der durch eine Änderung von Code, Konfiguration oder Infrastruktur eingeführt wurde. |
| Leistungsabweichung | Ein allmählicher Rückgang der Leistung im Laufe der Zeit, der ohne regelmäßige Tests mit etablierten Basiswerten unbemerkt ist. |
Festlegen messbarer Ziele für Ihre Leistungstests
Messbare Leistungsziele verwandeln subjektive Erwartungen in objektive Kriterien, die Sie testen und validieren können.
Definieren Sie Ihre Leistungsziele, und weisen Sie Budgets zu. Definieren und dokumentieren Sie bestimmte Leistungsziele, z. B. wie viele gleichzeitige Benutzer Sie unterstützen müssen. Stellen Sie sicher, dass diese Ziele ihren Zielen auf Serviceebene (SLOs) entsprechen und diese in messbare Testziele übersetzen.
Weisen Sie Leistungs- und Fehlerbudgets auf verschiedenen Ebenen Ihrer Workload zu. Wenn Leistungstests fehlschlagen, helfen Ihnen Ihre Budgets dabei, zu ermitteln, welche Ebene verantwortlich ist und wo Sie die Optimierungsbemühungen konzentrieren können. Ohne Budgets erkennen Fehlerhafte Tests nur, dass Leistungsziele nicht erfüllt werden, und nicht, wo das Problem liegt.
Sie können z. B. Budgets von 400 ms für DIE API-Antwortzeit, 150 ms für Datenbankabfragen und eine 1% Obergrenze für fehlgeschlagene Anforderungen festlegen. Wenn ein Test fehlschlägt, können Sie die Ergebnisse der einzelnen Ebenen anhand ihres Budgets überprüfen, um zu ermitteln, ob das Problem langsame API-Antworten, langsame Datenbankabfragen oder eine Zunahme von Fehlern ist.
Note
Vermeiden Sie die Definition von SLOs, bevor Sie Ihre Benutzerflüsse und Leistungsanforderungen verstehen. SLOs sollten auf realen Benutzeranforderungen und Geschäftszielen basieren, nicht auf willkürliche Ziele.
Definieren Sie Akzeptanzkriterien mit eindeutigen Durchlauf- und Fehlerschwellenwerten. Basieren Sie auf ihren Akzeptanzkriterien auf Leistungsmetriken wie Latenz, Reaktionszeiten, Durchsatz, Ressourcenauslastung, Fehlerraten und alle anderen Leistungsindikatoren, die ihren Leistungszielen entsprechen.
Definieren Sie Schwellenwerte für jede Metrik, sodass Ihre Tests eindeutige Bestanden- oder Fehlerergebnisse erzeugen. Wenn Ihr SLO erfordert, dass 95% der Anfragen innerhalb von 200 ms abgeschlossen werden, setzen Sie den API-Antwortzeitschwellenwert beim 95. Perzentil auf 200 ms fest. Jeder Testlauf, bei dem das 95. Perzentil 200 ms überschreitet, gilt als nicht bestanden.
Beginnen Sie frühzeitig und testen Sie kontinuierlich
Frühzeitige Leistungsanalyse identifiziert Engpässe in der Architektur, bevor sie kostspielig zu beheben sind.
Starten Sie leistungstests so früh wie möglich im Lebenszyklus der Softwareentwicklung Ihrer Workload. Sie benötigen keine vollständige Anwendung, um zu beginnen. Entwickler können Code lokal profilen, Antwortzeiten messen und ressourcenintensive Vorgänge identifizieren. Frühzeitiges Testen informiert Entwurfsentscheidungen, überprüft Architekturentscheidungen gegen Leistungsziele und identifiziert Optimierungsmöglichkeiten.
Testen Sie Ihre Arbeitsauslastung kontinuierlich, da sie sich weiterentwickelt, um neue Anforderungen zu erfüllen. Bei jeder Codeänderung können Leistungsregressionen auftreten. Führen Sie regelmäßig Tests aus, um diese Änderungen frühzeitig abzufangen. Integrieren Sie Leistungstests in Bereitstellungspipelinen und führen Sie regelmäßige automatisierte Tests aus, um Leistungsabweichungen zu erkennen, bevor sie die Produktion erreicht.
Kompromiss. Frühe Leistungstests erfordern dedizierte Infrastruktur und spezialisiertes Know-how, was die Betriebskosten erhöht. Gleichen Sie diese Investition gegen die Kosten von Leistungsproblemen aus, die verspätet entdeckt wurden, und Produktionsvorfälle.
Testen unter realen Bedingungen
Leistungstests sollten realen Bedingungen entsprechen, damit Ihre Ergebnisse aussagekräftig sind.
Spiegeln Ihrer Produktionsumgebung
Ihre Testumgebung sollte die Produktion so genau wie praktisch spiegeln. Passen Sie Ihren Ansatz für die Umgebung basierend auf dem Risikoprofil Ihrer Workload an.
Für unternehmenskritische Arbeitslasten gleichen Sie die Produktion genau wie folgt ab:
- Berechnen von SKUs und Konfigurationen
- Einstellungen für die Autoskalierung
- Zwischenspeichern von Konfigurationen
- Netzwerkbedingungen (Latenz, Bandbreite)
- Externe Abhängigkeiten
Bei nicht kritischen Arbeitslasten können Tests in einer skalierten Umgebung, die die Produktion nachahmt, nützliche Erkenntnisse zu niedrigeren Kosten liefern.
Verhindern sie die Konfigurationsabweichung. Die Konfigurationsabweichung kann zu irreführenden Testergebnissen führen. Implementieren Sie automatisierte Prüfungen, um zu überprüfen, ob Ihre Testumgebung mit der Produktion übereinstimmt. Stellen Sie sicher, dass vor dem Ausführen von Tests die richtigen Versionen bereitgestellt werden.
Kompromiss. Die vollständige Produktionsreplikation für Leistungstests erhöht die Infrastrukturkosten erheblich. Bewerten Sie, ob das Risiko von Leistungsproblemen in der Produktion die Kosten der dedizierten Leistungstestinfrastruktur für Ihre Workload rechtfertigt.
Überprüfen der Leistung in der Produktion
Testumgebungen können keine realen Bedingungen replizieren, die sich auf die Leistung auswirken. Produktionstests stellen Probleme offen, die nur unter der tatsächlichen Nutzung auftreten und genaue Basispläne für zukünftige Optimierungen bereitstellen. Einige Leistungsanforderungen können nur überprüft werden, wenn sich echte Benutzer, Daten und Infrastruktur überschneiden.
Führen Sie kontrollierte Produktionstests durch. Planen Sie Tests außerhalb der Spitzenzeiten, um zu verstehen, wie sich Ihre Arbeitslast bei Ressourcenauslastung verhält und sich von Fehlern erholt.
Produktionstests zeigen Leistungseigenschaften unter tatsächlichen Bedingungen an, einschließlich:
- Realistische Benutzerverhaltensmuster und Datenvolumes
- Echte Netzwerklatenz und Bandbreitenvariationen
- Geografische Verteilungseffekte
- Leistung und Abhängigkeiten von Drittanbieter-APIs
- Tatsächliches Zwischenspeicherungsverhalten und Infrastrukturmerkmale
Verwenden Sie progressive Testtechniken. Beginnen Sie mit kleinen Prozentsätzen des Verkehrs und steigen Sie schrittweise. Überwachen Sie die Reaktionszeiten, den Durchsatz, die Fehlerraten und die Ressourcenauslastung in jedem Schritt. Dieser graduelle Ansatz begrenzt das Risiko, während er den Bruchpunkt identifiziert, Engpässe aufdeckt und eine genaue Ansicht des Systemverhaltens unter zunehmender Nachfrage bereitstellt.
Überwachen Sie die Produktionstests kontinuierlich , um Probleme frühzeitig zu finden. Implementieren Sie automatisierte Schutzmaßnahmen, die Tests anhalten, wenn sie sich negativ auf Benutzer auswirken, z. B. automatisierte Rollbackmechanismen und Echtzeitwarnungen. Diese Techniken stellen eine schnelle Reaktion sicher und minimieren Unterbrechungen.
Note
Wenn Sie kontrollierte Leistungstests in der Produktion ausführen, müssen Sie zusätzliche Kapazität zuweisen, um die zusätzliche Last zu verarbeiten, die von den Tests generiert wird.
Risiko: Produktionstests wirken sich direkt auf reale Kunden aus, da sie zusätzliche Last erzeugen und den Datenverkehr stören können. Implementieren Sie immer Schutzmaßnahmen, begrenzen Sie das Risiko und haben Sie Rollbackpläne bereit, um potenzielle geschäftliche Auswirkungen zu minimieren. Wägen Sie die Vorteile realistischer Tests mit den potenziellen geschäftlichen Auswirkungen der Unterbrechung von Live-Benutzern ab.
Überprüfen von Änderungen mit hypothesengesteuerten Experimenten
Verwenden Sie hypothesengesteuerte Experimente, um Ihre Leistungstests zu leiten. Entwerfen Sie individuelle Leistungsexperimente, damit sie aussagekräftige Ergebnisse erzielen.
Beginnen Sie mit einer fokussierten Hypothese über die Leistung Ihrer Workload und definieren Sie messbare Erfolgskriterien, die zu umsetzbaren Entscheidungen führen. Ihre Hypothese könnte beispielsweise lauten: "Das Hinzufügen eines Indexes zur Tabelle "Bestellungen" reduziert die Abfragezeit um 70% unter Spitzenlast." Ihr Basisplan ist das aktuelle Schema, und die Variante ist das Schema mit dem neuen Index. Führen Sie den gleichen Auslastungstest für beide Versionen aus. Erfassen Sie Abfragelatenz, Datenbank-CPU-Auslastung und Durchsatz, und vergleichen Sie dann die Ergebnisse, um zu bestimmen, ob die Hypothese wahr ist.
Kompromiss. Hypothesengesteuerte Experimente erfordern das Ausführen der gleichen Tests sowohl mit Basis- als auch Variantenkonfigurationen, wodurch die Infrastrukturkosten und die Testausführungszeit erhöht werden. Konzentrieren Sie sich auf Änderungen mit hohem Einfluss, bei denen die potenzielle Leistungssteigerung den zusätzlichen Testaufwand rechtfertigt.
Anwenden mehrerer Leistungstesttypen
Leistungstests umfassen eine Reihe von Tests, die Geschwindigkeit, Stabilität und Skalierbarkeit unter verschiedenen Bedingungen bewerten. Jeder Testtyp zielt auf unterschiedliche Leistungsaspekte Ihrer Workload ab. Es entdeckt einzigartige Erkenntnisse und ermöglicht eine vollständige Bewertung, die über funktionsbezogene Tests hinausgeht.
Verwenden Sie mehrere Testtypen, um Ihre Workload aus unterschiedlichen Blickwinkeln zu überprüfen. Stresstests finden z. B. den Bruchpunkt unter Spitzenlast, aber nur Ausdauertests decken Speicherlecks auf, die sich über Stunden oder Tage offenbaren.
Wählen Sie Testtypen basierend auf dem, was Sie überprüfen müssen.
In der folgenden Tabelle wird gezeigt, wann Sie jeden Testtyp verwenden sollten und was er über Ihre Workload zeigt. Diese Tabelle ist zwar keine erschöpfende Liste, dient aber als illustratives Beispiel.
| Testtyp | Hauptzweck | Zeitpunkt der Anwendung | Was es zeigt | Umwelt |
|---|---|---|---|---|
| Auslastungstests | Überprüfen, ob das System erwartete Benutzervolumes unter normaler und Spitzenauslastung behandelt | Frühzeitig starten, häufig ausführen | Geplante Leistung, Kapazitätsbeschränkungen, Skalierungseffektivität | Testumgebung oder produktionsähnliche Umgebung |
| Stresstest | Grundlegendes zu Systemgrenzwerten und Bruchpunkten | Bevor das System produktionsbereit ist | Maximale Kapazität, Fehlermodi, Wiederherstellungsverhalten | Dedizierte Leistungstestumgebung |
| Spitzentests | Sicherstellen, dass das System plötzliche Datenverkehrsspitzen verarbeitet | Beginnen Sie frühzeitig, insbesondere für öffentlich zugängliche Apps | Autoskalierungsreaktivität, Warteschlangenverwaltung, sanfte Degradierung | Staging- oder Produktionsumgebung |
| Ausdauer-/Dauerbelastungstests | Erkennen von Problemen, die nur über längere Zeiträume angezeigt werden | Nach dem erfolgreichen Abschluss der anfänglichen Auslastungstests | Speicherverluste, Ressourcenausschöpfung, Verbindungspoolprobleme | Produktionsähnliche Umgebung mit vollständiger Ressourcenzuordnung |
Versuchen Sie nicht, alle Testtypen sofort zu implementieren. Beginnen Sie mit grundlegenden Auslastungstests, um die grundlegende Leistung zu verstehen. Wenn Sie Risiken erkennen und Erfahrungen sammeln, erweitern Sie sich auf Stresstests, Spitzentests und schließlich Ausdauertests.
Kompromiss. Leistungstests in allen Testtypen erfordern erhebliche Zeit- und Infrastrukturinvestitionen. Passen Sie Ihre Testinvestitionen auf Ihr Geschäftsrisiko an.
Verwenden von realen Nutzungsmustern und Datenmerkmalen
Tests mit realistischen Daten bieten genaue Einblicke in den Ressourcenverbrauch, das Systemverhalten und ausgeblendete Leistungsprobleme.
Erstellen Sie verschiedene Testdatensätze, die verschiedene Szenarien, Benutzerprofile und Datenvolumes darstellen. Verwenden Sie Eingabevariationen und Zufallsvariationen, um echte Benutzervielfalt nachzuahmen. Schließen Sie Edgefälle ein, die Leistungsprobleme verursachen können, z. B. große Nutzlasten, komplexe Abfragen oder hohe Parallelität.
Ihre Testdaten sollten wie echte Produktionsdaten aussehen. Verwenden Sie synthetische Daten mit Produktionsdatenmerkmalen. Reservieren Sie Produktionsdatensätze (ordnungsgemäß anonymisiert) für bestimmte Szenarien, z. B. zum Hervorheben von Datenverwaltungsverhalten wie Transaktionskonsistenz, Latenz und Volumenbehandlung.
Simulieren sie synthetische Transaktionen, die echte Benutzerworkflows nachahmen. Skripten Sie diese Transaktionen, und führen Sie sie wiederholt aus, um Last zu generieren, die angibt, wie Ihre Workload tatsächlich verwendet wird.
Ihre Testszenarien sollten tatsächliche Verwendungsmuster widerspiegeln, z. B. gleichzeitiger Benutzerzugriff, Spitzenlastzeiten und bestimmte Transaktionssequenzen. Stellen Sie sicher, dass Szenarien mit Geschäftszielen übereinstimmen, sodass die Leistungsergebnisse den tatsächlichen Benutzerwert widerspiegeln.
Schließen Sie beim Testen unter Auslastung tatsächliche API-Aufrufe von Drittanbietern ein. Das Simulierten externer Abhängigkeiten führt dazu, dass Tests schneller und vorhersehbarer ausgeführt werden, aber es blendet Leistungsprobleme in der praxisnahen Welt aus. Wenn Ihre App von einer Zahlungsprozessor-API abhängt, testen Sie mit echten Aufrufen, um die End-to-End-Latenz zu verstehen.
Verwenden Sie Testergebnisse, um Entwurfsentscheidungen zu leiten.
Ihre Testergebnisse fördern Designentscheidungen, indem zuverlässige Basispläne erstellt und Optimierungsbemühungen geleitet werden.
Legen Sie Ihre Basismaße fest. Baselines helfen Ihnen dabei, Trends und Anomalien zu identifizieren und zu beurteilen, ob Optimierungsänderungen Verbesserungen bringen. Sie benötigen zuverlässige Basispläne, um Leistungstrends im Laufe der Zeit nachzuverfolgen.
Aufzeichnen von Leistungsmetriken während der anfänglichen Tests. Diese Aufzeichnung ist Ihre Basislinie, eine Momentaufnahme der "normalen" Leistung. Vergleichen Sie in nachfolgenden Ausführungen neue Ergebnisse mit dieser Basislinie, um Leistungsänderungen zu erkennen. Berücksichtigen Sie die Auswirkungen auf die Benutzer, Häufigkeit, Kosten für die Behebung und Risiko von Änderungen, wenn Sie die Daten untersuchen, um das Systemverhalten unter verschiedenen Bedingungen zu verstehen. Suchen Sie nach Mustern, die zeigen, wo sich die Leistung verschlechtert. Verwenden Sie diesen Einblick, um Optimierungsbemühungen zu priorisieren.
Optimierung ist ein iterativer Prozess und sollte von Daten gesteuert werden. Legen Sie dedizierte Zeit in Ihrem Entwicklungszyklus für die Leistungsoptimierung fest. Verwenden Sie Ihre Basispläne, um die Auswirkungen von Änderungen zu messen und sicherzustellen, dass sie die erwarteten Verbesserungen bereitstellen, ohne Regressionen einzuführen.
Korrelieren Sie die Leistung mit Geschäftsmetriken. Verbinden Sie Leistungsverbesserungen mit Geschäftsergebnissen wie Umsatz, Benutzerbindung, Kundenzufriedenheit und Konvertierungsrate, um fortgesetzte Investitionen in die Leistungsoptimierung zu rechtfertigen.
Note
Überprüfen und aktualisieren Sie Ihre Basispläne regelmäßig nach erheblichen Änderungen ihrer Arbeitsauslastung, z. B. Architekturänderungen, neue Features oder Skalierungsanpassungen. Durch diese Aktion stellen Sie sicher, dass Ihre Leistungsziele relevant bleiben.
Halten Sie Testressourcen an den aktuellen Verwendungsmustern ausgerichtet
Ihre Leistungstestressourcen enthalten wichtige Kenntnisse über das erwartete Verhalten Ihrer Workload, akzeptable Leistungsschwellenwerte und realistische Datenverkehrsmuster.
Organisieren Sie Testsuiten nach Typ. Halten Sie Belastungstests, Stresstests und Ausdauertests in separaten Suiten. Mischen Sie sie nicht. Jeder Typ weist unterschiedliche Setupanforderungen, Laufzeiten und Erfolgskriterien auf. Organisierte Suites vereinfachen die Ausführung gezielter Tests, vergleichen Ergebnisse über Läufe hinweg und verwalten jede Suite unabhängig voneinander.
Aktualisieren Sie Testdaten regelmäßig. Veraltete Testdaten führen zu unrealistischen Ergebnissen. Generieren Sie Testdaten neu, um aktuelle Produktionsdatenmerkmale widerzuspiegeln, wenn sich Ihr Datenmodell ändert, Datenvolumen wachsen oder die Benutzerdemografie verschoben wird.
Überprüfen Sie Testszenarien, während sich Ihre Workload weiterentwickelt. Planen Sie regelmäßige Überprüfungen, um sicherzustellen, dass Ihre Szenarien weiterhin die tatsächliche Nutzung widerspiegeln. Szenarien werden veraltet als:
- Benutzerverhalten verschiebt sich im Laufe der Zeit
- Datenverkehrsmuster ändern sich, wenn Ihre Benutzerbasis wächst
- Neue Features stellen unterschiedliche Verwendungsmuster vor
- Infrastruktur wird skaliert, um neue Kapazitätsanforderungen zu erfüllen
Azure-Unterstützung
mit Azure Pipelines können Sie Leistungstests in Ihre CI/CD-Pipeline integrieren. Sie können Auslastungstests als Schritt in Ihrer Pipeline hinzufügen, um die Leistung und Skalierbarkeit Ihrer Anwendungen zu überprüfen.
Azure Chaos Studio hilft Ihnen, reale Fehler in Ihre Anwendung zu injizieren, sodass Sie kontrollierte Tests zur Fehlerinjektion durchführen können. Die Experimente helfen Ihnen, Ihre Cloudanwendung und Dienstresilienz zu messen, zu verstehen und zu verbessern.
Azure Load Testing ist ein Lastentestdienst, der eine hohe Auslastung für jede Anwendung generiert. Load Testing bietet Funktionen zum Automatisieren von Auslastungstests und zur Integration in Ihren Continuous Integration- und Continuous Delivery (CI/CD) Workflow. Sie können Testkriterien definieren, z. B. durchschnittliche Antwortzeit oder Fehlerschwellenwerte, und die Auslastungstests basierend auf bestimmten Fehlerbedingungen automatisch beenden. Load Testing bietet ein Dashboard, das Liveupdates und detaillierte Ressourcenmetriken von Azure-Anwendungskomponenten während eines Auslastungstests bereitstellt. Sie können die Testergebnisse analysieren, Leistungsengpässe identifizieren und mehrere Testläufe vergleichen, um Leistungsregressionen im Laufe der Zeit zu verstehen.
Azure Monitor ist eine umfassende Überwachungslösung zum Sammeln, Analysieren und Reagieren auf Telemetrie aus Ihrer Cloud und lokalen Umgebungen. Application Insights ist eine Erweiterung von Monitor, die APM-Features bereitstellt. Sie können Application Insights verwenden, um Anwendungen während der Entwicklung und tests und auch in der Produktion zu überwachen.
Verwandte Links
- Empfehlungen für Sicherheitstests
- Empfehlungen für das Entwerfen einer Zuverlässigkeitsteststrategie
Leistungsfähigkeitscheckliste
Lesen Sie die vollständigen Empfehlungen.