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:04 | Richten Sie eine konsistente Leistungsmessung ein, damit das Verhalten im Laufe der Zeit analysiert werden kann, verglichen mit Basiswerten und verwendet wird, um Beeinträchtigungen, Ineffizienz und Skalierungslücken zu erkennen. |
|---|
Ohne Leistungsdaten gehen zugrunde liegende Probleme und Optimierungsmöglichkeiten unbemerkt, was zu einer beeinträchtigten Benutzererfahrung führt.
In diesem Artikel werden Entwurfsstrategien für die Implementierung einer Mehrschichtleistungsmessung beschrieben, die Latenz, Durchsatz und Ressourcenverhalten erfasst, um Basispläne einzurichten und Leistungsbeeinträchtigungen in der gesamten Workload zu identifizieren.
Die wichtigsten Strategien in diesem Artikel basieren auf der grundlegenden betrieblichen Praxis der Observierbarkeit, die in OE:07 Architekturstrategien für das Entwerfen eines Überwachungssystems beschrieben wird. Anleitungen zur Implementierung der Überwachungspraxis finden Sie im Überwachungsentwurfsleitfaden. Wir empfehlen, diese Ressourcen zuerst zu überprüfen. Empfehlungen in diesem Leitfaden beziehen sich auf die Leistung. Informationen zur Zuverlässigkeit finden Sie unter RE:10-Architekturstrategien für das Entwerfen einer zuverlässigen Überwachung und Warnungsstrategie.
Definitionen
| Begriff | Definition |
|---|---|
| Aktivitätsprotokolle | Protokolle, die Verwaltungsvorgänge bei Ressourcen nachverfolgen, wie zum Beispiel das Löschen einer Ressource. |
| Anwendungsprotokolle | Protokolle, die Informationen zu Anwendungsereignissen, Fehlern und anderen Aktivitäten wie Anmeldungen und Datenbankverbindungsfehlern protokollieren. |
| Tool zur Anwendungsleistungsüberwachung (Application Performance Monitoring, APM) | Ein Tool, das die Leistung einer Anwendung überwacht und meldet. |
| Baselines | Erwartete Systemleistungsmetriken, die als Referenzpunkt zum Erkennen von Drift, Regressionen und Verbesserungen im Laufe der Zeit verwendet werden. |
| Code-Instrumentation | Die direkte oder indirekte Erfassung von Leistungsmetriken aus der Perspektive des Anwendungscodes. Erfasste Metriken umfassen Flussmetriken, Ressourcennutzung und Metriken, die für die Sprache oder Laufzeit spezifisch sind. |
| Verteiltes Tracing | Sammeln und Korrelieren von Metriken über verteilte Workloadkomponenten hinweg, um End-to-End-Transaktionsflüsse zu verstehen. |
| Latenz | Die Zeitverzögerung zwischen dem Initiieren einer Anforderung und dem Empfang einer Antwort, messung der Reaktionsfähigkeit des Systems. |
| Metrics | Numerische Messungen, die das Leistungsverhalten der Arbeitsauslastung im Laufe der Zeit aufzeichnen, in der Regel für die Analyse aggregiert. |
| Perzentile (p50, p95, p99) | Statistische Maße zur Leistungsverteilung; p50 stellt typische Leistung dar, p95 zeigt die meisten Nutzererfahrungen bei Belastung, p99 erfasst die Leistung im schlechtesten Fall. |
| Plattformmetriken | Numerische Werte, die die Arbeitsauslastung zu einem bestimmten Zeitpunkt aufzeichnen. |
Verwenden Sie quantilbasierte Metriken
Messen Sie Leistungsmetriken wie Latenz, Antwortzeit oder Ladezeiten mit Perzentilen (p50, p95, p99) statt Durchschnittswerte. Mittelwerte können irreführend sein. Wenn die meisten Anforderungen schnell sind, aber einige extrem langsam sind, blendet der Durchschnitt die schlechte Erfahrung aus.
Perzentile zeigen das Randverhalten an, das für das Verständnis der Benutzererfahrung wichtig ist. p50 stellt die typische Leistung dar, p95 zeigt, was die meisten Benutzer beim Laden erleben, und p99 erfasst die Leistung im schlimmsten Fall oder die Ausreißer.
Erfassen Sie Leistungsdaten mithilfe Ihrer Überwachungstools und stellen Sie sie als Perzentile über definierte Zeitfenster dar. Verwenden Sie diese als Basisplan für die Überwachung, Warnung und Leistungsanalyse.
Definieren ihrer Leistungsverbesserungsgrenzen
Definieren Sie klare Leistungsgrenzen, damit Sie genau wissen, was in Ihren Messungen enthalten ist. Brechen Sie die Latenz im gesamten System auf, anstatt sie als einzelne Zahl zu behandeln. Ordnen Sie zum Beispiel jeder Ebene wie Edge-Dienste, Gateways, Rechnerressourcen und Abhängigkeiten Zeit zu, um festzustellen, wo tatsächlich Verzögerungen auftreten.
Trennen Sie das, was Sie nicht steuern: Code, Dienste, Infrastruktur und direkte Abhängigkeiten gegenüber externen Faktoren wie clientseitigen Bedingungen, DNS-Auflösung, ISP-Latenz oder Geräteeinschränkungen. Diese Unterscheidung verhindert Fehlzuweisungen und hält die Optimierung auf die Bereiche konzentriert, in denen Sie Änderungen vornehmen können, während dennoch die vollständige End-to-End-Nutzererfahrung widergespiegelt wird.
Bewerten Sie, wann und wo sich Leistungsprobleme auf die Benutzererfahrung auswirken. Entschädigen Sie diese Beeinträchtigung durch Den Entwurf oder verringern Sie durch Verbesserungen der steuerbaren Teile des Systems.
Signale segmentieren basierend auf Umgebung und Zweck
Segmentieren Sie Leistungsdaten, sodass jedes Signal einen klaren Kontext widerspiegelt. Getrennt nach Umgebung und Zweck, um das Vermischen von Signalen zu vermeiden, die sich unterschiedlich verhalten oder verschiedenen Entscheidungen dienen.
Halten Sie Produktions- und Nichtproduktionsdaten getrennt. Produktionsdaten spiegeln echte Auswirkungen der Benutzer wider und sollten die Überwachung und Warnungen fördern. Nichtproduktionsdaten sind nützlich für Tests und Optimierungen, aber das Mischen mit Produktionsdaten verfälscht die Ergebnisse und blendet echte Probleme aus.
Trennen Sie Leistungsmetriken von Geschäftsmetriken. Leistungsmetriken verfolgen das Systemverhalten und die Arbeitsauslastungsintegrität, während Geschäftsmetriken die Ergebnisse nachverfolgen. Auch wenn sie sich überschneiden, behalten Sie sie in unterschiedlichen Datenströmen bei, sodass sie unabhängig voneinander analysiert und verwendet werden können.
Erstellen von abgestimmten und umsetzbaren Leistungswarnungen
Das Ziel der Warnung ist die frühzeitige Erkennung von Leistungsbeeinträchtigungen, bevor sie benutzer- oder geschäftsbeeinflussend wird. Erstellen Sie Warnungen auf zwei Ebenen: End-to-End-Benutzererfahrung und zentrale interne Transaktionen, die kritische Systempfade unter Last darstellen.
Verwenden Sie ein einzelnes, konsistentes Dataset in jeder Umgebung für Ziele und Warnungen. Wenn Warnungen auf unterschiedlichen Daten basieren als Ihre Leistungsziele, werden sie unzuverlässig und schwer zu vertrauen.
Erstellen Sie Warnungen, die umsetzbar sind und eindeutig mit Leistungsergebnissen verknüpft sind. Jede Warnung sollte angeben, welcher Grenzwert anhaltend verletzt wurde, welche potenziellen Auswirkungen bestehen und welche Komponenten beteiligt sind, damit eindeutig ist, wo untersucht werden sollte und was betroffen ist. Beginnen Sie mit standardmäßigen, bekannten Schwellenwerten, und verfeinern Sie sie dann im Laufe der Zeit basierend auf beobachteten Systemverhaltens- und Arbeitsauslastungsmerkmalen.
Wenn direkte Warnungen bei einer externen Abhängigkeit nicht möglich sind, verwenden Sie indirekte Signale wie die Abhängigkeitsaufrufdauer, Fehlerraten oder das Timeoutverhalten, um ihre Auswirkungen auf die Systemleistung abzuschätzen.
Überwachen der Flexibilität
Messen Sie, wie Ihr System auf Änderungen bei Bedarfs- und Skalierungsereignissen reagiert.
Verfolgen Sie die Kaltstart- und Initialisierungslatenz, um zu verstehen, wie sich der Startaufwand auf die Reaktionsfähigkeit auswirkt, insbesondere bei Skalierungsereignissen. Überwachen Sie das Skalierungsverhalten beim Skalierung auf und Skalierung ab, um zu bewerten, wie schnell sich das System an Änderungen der Last anpasst und ob Skalierungsaktionen mit der Nachfrage Schritt halten.
Nachverfolgen der Leistung im Laufe der Zeit
Verfolgen Sie, wie sich die Leistung mit Änderungen in Ihrem Design und externen Faktoren weiterentwickelt.
Richten Sie Basispläne ein, die die erwartete Systemleistung darstellen, und vergleichen Sie dann das aktuelle Verhalten mit ihnen, um Abweichung zu erkennen, einschließlich Regressionen und Verbesserungen.
Verbinden sie Leistungsänderungen mit Betriebsereignissen wie Bereitstellungen, Konfigurationsupdates und Skalierungsaktionen. Markieren Sie Zeitachsen mit diesen Ereignissen, damit Verschiebungen im Verhalten klaren Kontext haben und auf wahrscheinliche Ursachen zurückverfolgt werden können.
Verwenden Sie diese fortlaufende Sichtbarkeit als Feedbackschleife für Technische Entscheidungen. Geben Sie Leistungseinblicke in die Planung und Priorisierung ein, und behandeln Sie sie als Eingaben für regelmäßige Arbeit und nicht nur als Reaktion auf Vorfälle.
Optimieren Sie die Leistungsziele kontinuierlich, da sich das System weiterentwickelt. Passen Sie SLOs, Schwellenwerte und Erwartungen basierend auf beobachtetem Verhalten und Nutzungsmustern an, damit Ziele realistisch bleiben und auf die tatsächliche Benutzererfahrung abgestimmt sind.
Sammeln von Anwendungsleistungsdaten
Sie müssen über die Leistungsmetriken der Anwendung verfügen, z. B. Durchsatz, Latenz und Abschlusszeiten, in erster Linie durch Instrumentierungscode gesammelt.
Instrument kritische Ausführungspfade, bei denen die Leistung am besten sichtbar ist: Schlüsselanforderungsflüsse, ressourcenintensive Vorgänge und Punkte, an denen externe Abhängigkeiten oder Wiederholungen auftreten. Stellen Sie die Sichtbarkeit der End-to-End-Transaktion sicher, sodass die Gesamtausführungszeit und die damit verbundenen Schritte gemessen werden können.
Erfassen Sie drei Kerntypen von Leistungssignalen:
- Metriken für das Verhalten der aggregierten Leistung (Latenzverteilungen, Durchsatz, Fehlerraten)
- Ablaufverfolgungen zum Verständnis der Zeitverteilung über Anforderungspfade und Systemkomponenten
- Protokolle für detaillierte Ausführungskontexte bei bestimmten Schritten oder Ereignissen
Verwenden Sie konsistente Metadaten über diese Signale hinweg, damit Leistungsdaten über Ebenen des Systems und diensteübergreifend korreliert werden können.
Vermeiden Sie das Duplizieren von Leistungssignalen auf niedrigerer Ebene, die bereits von der Plattform verfügbar gemacht werden, es sei denn, zusätzliche Granularität ist erforderlich, um workloadspezifische Verhaltensweisen oder Engpässe zu erläutern.
Sammeln von Ressourcenleistungsdaten
Sammeln Sie Leistungsdaten auf Ressourcenebene, um zu verstehen, wie sich Infrastrukturkomponenten unter Last verhalten und wie sie zur Gesamtauslastungsleistung beitragen.
Jeder Dienst stellt plattformspezifische Metriken zur Verfügung, die die Gesundheits- und Leistungsmerkmale widerspiegeln. Verwenden Sie die Diagnoseeinstellung , um diese Daten zu exportieren, sodass sie für Warnungen, Dashboards und eine langfristige Analyse über die aufbewahrung der kurzlebigen Plattform hinaus zugegriffen werden kann.
Sammeln Sie Metriken und Protokolle für alle Ressourcen. Verfolgen Sie die Berechnungs- und Speicherauslastung anhand erwarteter Bereiche, um zu bestätigen, dass die Unterbereitstellung keine Latenz einführt und die Leistung beim Laden beeinträchtigt. Overprovisioning kann auch mit diesen Daten erkannt werden, indem die P99-Nutzung betrachtet und mit dem verbleibenden Spielraum Ihrer Ressourcen verglichen wird.
Überwachen des Netzwerkdatenverkehrs als Teil der Ressourcenleistung. Analysieren Sie den Datenverkehrsfluss über Subnetze und Dienstgrenzen hinweg, um Latenz-, Überlastungs- und Datenübertragungsmuster zu verstehen, die sich auf die Arbeitsauslastung auswirken können.
Sammeln von Datenbank- und Speicherdaten
Datenbank- und Speichersysteme erzeugen spezielle Leistungssignale zur Identifizierung von Engpässen, zur Überprüfung der Kapazität und zum Verständnis des Arbeitsauslastungsverhaltens. Diese Signale stammen in der Regel aus integrierten Überwachungstools und vom System generierten Protokollen.
Konzentrieren Sie sich auf wichtige Leistungsdimensionen:
| Bereich | Was zu messen ist | Was sie Ihnen sagt |
|---|---|---|
| Durchsatz | Lese-/Schreibvolumen im Laufe der Zeit | Datenübertragungskapazität |
| Latenz | Zeit pro Speichervorgang | Reaktionsfähigkeit des Speichers |
| IOPS | Lese-/Schreibvorgänge pro Sekunde | Transaktionsbehandlungsfunktion |
| Kapazitätsnutzung | Verwendeter und verfügbarer Speicher | Skalierungs- und Kapazitätsplanungsanforderungen |
Erweitern Sie die Überwachung für Datenbanken auf arbeitslastspezifisches Verhalten:
| Bereich | Was zu messen ist | Was sie Ihnen sagt |
|---|---|---|
| Abfrageleistung | Ausführungszeit, Häufigkeit, Ressourcennutzung | Effizienz von Datenzugriffsmustern |
| Transaktionsleistung | Dauer, Parallelität, Sperrkonflikt | Konkurrenz- und Transaktionseffizienz |
| Indexleistung | Fragmentierung, Nutzung, Optimierungswirkung | Effektivität von Abfragebeschleunigungsstrukturen |
| Ressourcenverwendung | CPU, Arbeitsspeicher, Datenträger, Netzwerk | Einschränkungen auf Systemebene |
| Verbindungsmetriken | Aktive, fehlgeschlagene, abgebrochene Verbindungen | Stabilität und Verbindungsdruck |
| Transaktionsrate | Transaktionen pro Sekunde | Workloadintensität und Änderungen im Laufe der Zeit |
| Fehlerraten | Datenbankfehler und -ausfälle | Zuverlässigkeits- und Leistungsbeeinträchtigungssignale |
Verwenden Sie diese Signale zusammen, um zwischen langsamen Abfragen, Ressourcensättigung und strukturellen Ineffizienzen zu unterscheiden. Dies ermöglicht eine gezielte Optimierung sowohl für Speichersysteme als auch für Datenbankworkloads.
Erfassen von Betriebssystemleistungsdaten
Sammeln Sie für infrastrukturbasierte Workloads Metriken auf Betriebssystemebene, um zu verstehen, wie Rechenressourcen genutzt werden und wo Ressourceneinschränkungen auftreten können.
Messen Sie die Leistungsindikatoren des Betriebssystems in regelmäßigen Intervallen, um das zeitbasierte Verhalten des Systems unter Last zu erfassen.
| Bereich | Was zu messen ist | Was sie angibt |
|---|---|---|
| CPU | CPU-Auslastung (Benutzer/Privilegierte), CPU-Warteschlangenlänge | Berechnung von Sättigungs- und Planungsdruck |
| Processes | Threadanzahl, Handleanzahl | Prozesslast auf Ebene der Anwendung und des Betriebssystems |
| Gedächtnis | Zugesicherter Arbeitsspeicher, verfügbarer Arbeitsspeicher, Pagingrate, Swap-Nutzung | Speicherdruck und Pagingaktivität |
| Datenträger | Lese-/Schreibrate, Durchsatz, Datenträgerauslastung | Speicher-E/A-Leistung und Engpässe |
| Netzwerk | Schnittstellendurchsatz, RX/TX-Fehler | Netzwerkkapazitäts- und Übertragungsprobleme |
Verwenden Sie diese Signale, um die Ressourcensättigung auf Betriebssystemebene zu identifizieren und zwischen Ineffizienzen auf Anwendungsebene und Infrastruktureinschränkungen zu unterscheiden.
Generieren von synthetischen Daten bei Bedarf
Wenn Ihr System nicht regelmäßig verwendet wird, ist es schwierig zu erkennen, ob es gute Leistung erbringt, wenn der Datenverkehr zurückkehrt.
Verwenden Sie dazu synthetische Transaktionen, bei denen automatisiert Anfragen durch Ihr System gesendet werden. Diese simulieren die reale Nutzung, ohne dass sich dies auf tatsächliche Benutzer oder Daten auswirkt. Dadurch können Teile Ihres Systems aktiv bleiben, konsistente Leistungskennzahlen erzeugen und Muster offenlegen (wie beispielsweise Tageszeitprobleme), die durch unregelmäßige Nutzung möglicherweise verborgen bleiben könnten.
Azure-Unterstützung
Azure Monitor bietet eine einheitliche Plattform zum Sammeln, Analysieren und Reagieren auf Leistungsdaten über ihre gesamte Workload hinweg. Es aggregiert Daten aus Anwendungen, Infrastruktur und externen Quellen in einer gemeinsamen Datenplattform.
Datenerfassung und -speicherung: Verwenden Sie Log Analytics-Arbeitsbereiche , um Ihre Leistungsdaten mit konfigurierbaren Aufbewahrungsrichtlinien zu zentralisieren. Erstellen Sie mehrere Arbeitsbereiche, um Daten nach Umgebungs- oder Complianceanforderungen zu segmentieren.
Anwendungsüberwachung: Application Insights sammelt Telemetrie auf Anwendungsebene, einschließlich Anforderungsraten, Reaktionszeiten und Ausnahmen. Aktivieren Sie die verteilte Ablaufverfolgung , um die Leistung über verteilte Komponenten hinweg zu korrelieren.
Infrastrukturüberwachung: Aktivieren Sie Diagnoseeinstellungen für alle Azure-Dienste, um Plattformprotokolle und Metriken zu sammeln. Verwenden Sie die Azure Diagnostics-Erweiterung für detaillierte VM-Leistungsdaten. Erkunden Sie Telemetrieoptionen für Ihre spezifische Plattform. Beispielsweise emittieren Kubernetes-Cluster umfangreiche Leistungstelemetrie über Prometheus-Integrationen .
Datenbank und Speicher: Azure Monitor bietet integrierte Überwachung für Azure SQL-Datenbank, MySQL, PostgreSQL und Speicherdienste. Azure Storage Analytics verfolgt wichtige Leistungsindikatoren wie Durchsatz und Latenz über Blob, Tabelle und Warteschlangenspeicher hinweg.
Warnung und Analyse: Erstellen sie Warnungsregeln mit anpassbaren Schwellenwerten, Zeitfenstern und Aktionen (E-Mail, Webhooks, Azure Functions). Verwenden Sie Azure Monitor-Protokolle, um Leistungsdaten abzufragen und zu korrelieren. Details zu den Preisen finden Sie unter Azure Monitor-Preise.
Beispiele
- Grundlegende hochverfügbare zonenredundante App-Dienst-Webanwendung
- Überwachen einer Microservices-Anwendung in Azure Kubernetes Service (AKS)
- Überwachen von Azure-Plattform-Landing-Zonen-Komponenten
Verwandte Links
Leistungsfähigkeitscheckliste
Lesen Sie die vollständigen Empfehlungen.