Empfehlungen zur kontinuierlichen Leistungsoptimierung
Gilt für die folgende Checkliste zur Leistungseffizienz von Azure Well-Architected Framework:
PE:12 | Kontinuierliches Optimieren der Leistung. Konzentrieren Sie sich auf Komponenten, die im Laufe der Zeit eine Verschlechterung der Leistung aufweisen, z. B. Datenbanken und Netzwerkfeatures. |
---|
In diesem Leitfaden werden die Empfehlungen für die kontinuierliche Leistungsoptimierung beschrieben. Kontinuierliche Leistungsoptimierung ist der Prozess der ständigen Überwachung, Analyse und Verbesserung der Leistungseffizienz. Die Leistungseffizienz passt sich an steigende und abnehmende Nachfrage an. Die Leistungsoptimierung muss während der gesamten Lebensdauer der Workload eine fortlaufende Aktivität sein. Die Workloadleistung verschlechtert sich häufig oder wird im Laufe der Zeit zu einer übermäßigen Leistung, und zu den zu berücksichtigenden Faktoren gehören Änderungen in Nutzungsmustern, Nachfrage, Features und technischen Schulden.
Definitionen
Begriff | Definition |
---|---|
Datentiering | Eine Speicherstrategie, bei der Daten basierend auf ihrer Zugriffshäufigkeit kategorisiert und entsprechend auf Speicherebenen gespeichert werden. |
Technische Schulden | Die akkumulierten Ineffizienzen, suboptimalen Entwurfsentscheidungen oder Tastenkombinationen, die während des Entwicklungsprozesses absichtlich verwendet wurden, um Code schneller bereitzustellen. |
Gültigkeitsdauer | Ein Mechanismus, der eine Ablaufzeit für Daten festlegt. |
Wichtige Entwurfsstrategien
Die Leistungseffizienz ist, wenn die Workloadkapazität an der tatsächlichen Nutzung ausgerichtet ist. Eine Workload, die übermäßig gut abschneiden kann, ist ebenso problematisch wie eine Workload, die eine Unterperformance hat. Die Kompromisse unterscheiden sich. Überleistung wirkt sich auf die Kostenoptimierung aus. Schlechte Leistung wirkt sich auf Benutzer aus. Der Schlüssel zur Leistungseffizienz ist die Überwachung, Anpassung und Tests im Laufe der Zeit. Sie müssen regelmäßig Leistungsmetriken überprüfen und bei Bedarf Anpassungen vornehmen, um sicherzustellen, dass die Workload effizient ist. Das Testen aller Änderungen vor und nach der Implementierung ist erforderlich, um Leistungsziele zu erreichen.
Entwickeln einer Leistungskultur
Eine Leistungskultur ist eine Umgebung, in der kontinuierliche Verbesserungen erwartet werden und das Team aus der Produktion lernt. Die Leistungsoptimierung erfordert spezielle Fähigkeiten. Workloadteams benötigen die richtigen Fähigkeiten und die richtige Denkweise, um ihre Leistung zu optimieren, um steigende und rückläufige Nachfrage zu erfüllen. Außerdem müssen Sie ihre Zeit aufteilen, um die erforderliche Überwachung und Behebung von Leistungsproblemen zu unterstützen, sobald sie auftreten. Diese Teams benötigen klare Erwartungen. Beispielsweise müssen Leistungsziele, Baselines und Abweichungsschwellenwerte (wie weit von der Baseline akzeptabel ist) gut sichtbar und sozialisiert werden.
Kompromiss: Kontinuierliche Leistungsoptimierungen erfordern ein Team, das über die richtigen Fähigkeiten und Zeit verfügt, um Leistungsprobleme zu finden und zu beheben. Die Zuweisung von Personal zur Leistung erhöht die Betriebskosten. Wenn Sie über begrenzte Personalressourcen verfügen, kann die kontinuierliche Leistungsoptimierung Zeit in Anspruch nehmen, um andere operative Aufgaben zu vermeiden.
Evaluieren neuer Plattformfeatures
Die Bewertung neuer Plattformfeatures umfasst die Untersuchung der neuen Funktionen und Tools einer Plattform, die die Leistungseffizienz verbessern kann, z. B. optimierte Speicherlösungen, Zwischenspeichermechanismen oder Ressourcenverwaltungstools. Neue Plattformfeatures können Möglichkeiten zur Verbesserung der Leistungseffizienz eröffnen. Halten Sie Ihre Plattform und Ihre Tools auf dem neuesten Stand, um sicherzustellen, dass Sie die neuesten Innovationen und bewährten Methoden verwenden. Überwachen Sie das Feedback und die Leistungsmetriken dieser neuen Ergänzungen konsistent, um Ihren Ansatz zu verfeinern.
Priorisieren von Optimierungsbemühungen
Proaktive Leistungsoptimierung bedeutet, proaktive Maßnahmen zu ergreifen, um die Leistung der Workload zu verbessern und zu verbessern, bevor Leistungsprobleme auftreten. Die Verwendung proaktiver Maßnahmen umfasst das Identifizieren potenzieller Engpässe, die Überwachung von Leistungsmetriken und die Implementierung von Optimierungen, um sicherzustellen, dass die Workload effizient funktioniert und die gewünschten Leistungsziele erfüllt. Basierend auf der Analyse von sich verschlechternden Komponenten, kritischen Flows und technischen Schulden können Sie leistungsspezifische Optimierungen für jeden Bereich implementieren. Verbesserungen können Codeänderungen, Infrastrukturanpassungen oder Konfigurationsupdates umfassen.
Priorisieren von sich verschlechternden Komponenten
Eine Workload enthält häufig Komponenten wie Datenbanken und Netzwerkkomponenten, die im Laufe der Zeit zu Leistungseinbußen neigen. Wenn sich die Workload weiterentwickelt und sich die Nutzungsmuster ändern, wirken sich diese Änderungen häufig auf die Leistung einzelner Komponenten in der Workload aus. Höhere Daten in Datenbanken können zu längeren Abfragelaufzeiten und einem langsameren Datenabruf führen. Änderungen an Verwendungsmustern können zu einem suboptimalen Abfrageentwurf führen. Abfragen, die einst effizient waren, können mit der Entwicklung der Workload ineffizient werden. Ineffiziente Abfragen können übermäßige Ressourcen verbrauchen und die Datenbankleistung beeinträchtigen. Eine erhöhte Workloadauslastung kann zu einem höheren Netzwerkdatenverkehr führen, was zu Überlastungs- und Latenzproblemen führt.
Es ist wichtig, kontinuierliche Anstrengungen zu unternehmen, um die Leistung dieser Komponenten zu optimieren. Identifizieren und beheben Sie Proaktiv Leistungsprobleme in Ihrer Workload. Indem Sie bekannte sich verschlechternde Komponenten priorisieren, können Sie potenzielle Leistungsprobleme proaktiv beheben und den reibungslosen Betrieb Ihrer Workload sicherstellen. Dies kann die Implementierung von Leistungsoptimierungstechniken, die Optimierung der Ressourcenzuordnung oder das Upgrade von Hardware- oder Softwarekomponenten nach Bedarf umfassen.
Priorisieren kritischer Flows
Kritische Flows sind die wichtigsten Prozesse oder Workflows mit hoher Priorität in der Workload. Indem Sie diese kritischen Flows priorisieren, stellen Sie sicher, dass die wichtigsten Teile der Workload für die Leistung optimiert sind. Wenn Sie wissen, welche Flows wichtig sind, können Sie Optimierungsbemühungen priorisieren. Die Optimierung der Leistungseffizienz der wichtigsten Bereiche Ihrer Anwendung bietet die höchste Rendite. Sie sollten kritische Flows und die beliebtesten Seiten überwachen. Suchen Sie nach Möglichkeiten, sie effizienter zu gestalten.
Automatisieren der Leistungsoptimierung
Durch die Automatisierung können sich wiederholende und zeitaufwändige manuelle Prozesse vermieden werden, sodass sie effizient ausgeführt werden können. Die Automatisierung verringert die Wahrscheinlichkeit menschlicher Fehler und stellt die Konsistenz bei der Ausführung von Optimierungsaufgaben sicher. Durch die Automatisierung dieser Aufgaben können Sie auch Personen freisprechen, sich auf komplexere Aktivitäten und Aktivitäten zu konzentrieren, die einen mehrwertigen Wert haben. Sie können die Automatisierung auf verschiedene Aufgaben anwenden, z. B. Leistungstests, Bereitstellung und Überwachung:
Automatisierte Leistungstests: Verwenden Sie automatisierte Leistungstesttools wie JMeter, K6 oder Selenium, um verschiedene Workloads und Szenarien zu simulieren.
Automatisierte Bereitstellung: Implementieren Sie automatisierte Bereitstellungsprozesse, um konsistente und fehlerfreie Bereitstellungen sicherzustellen. Verwenden Sie CI/CD-Tools, um den Bereitstellungsprozess zu automatisieren. Diese Tools können Ihnen helfen, Leistungsengpässe zu identifizieren, wenn Sie sie verwenden, um Endpunkte zu testen, HTTP-Status zu überprüfen und sogar die Datenqualität und -variationen zu überprüfen.
Überwachung und Warnung: Richten Sie automatisierte Überwachungs- und Warnungssysteme ein, um Leistungsmetriken kontinuierlich zu überwachen und Abweichungen oder Anomalien zu erkennen. Wenn Leistungsprobleme erkannt werden, können automatisierte Warnungen ausgelöst werden, um die entsprechenden Teams oder Personen zu benachrichtigen.
Incidentverwaltung: Implementieren Sie ein automatisiertes Incident-Management-System, das Warnungen empfangen, Tickets erstellen und den entsprechenden Teams Tickets zur Lösung zuweisen kann. Mit diesen Schritten wird sichergestellt, dass Leistungsprobleme umgehend behoben und den richtigen Ressourcen zugewiesen werden.
Automatisierte Diagnose: Entwickeln Sie automatisierte Diagnosetools oder Skripts, die Leistungsdaten analysieren und die Grundursachen von Leistungsproblemen identifizieren können. Diese Tools können dabei helfen, bestimmte Bereiche oder Komponenten des Systems zu ermitteln, die Leistungsprobleme verursachen.
Automatisierte Wartungsaktionen: Definieren und implementieren Sie automatisierte Wartungsaktionen, die ausgelöst werden können, wenn bestimmte Leistungsprobleme erkannt werden. Diese Aktionen können das Neustarten von Diensten, das Anpassen der Ressourcenzuordnung, das Löschen von Caches oder das Implementieren anderer Leistungsoptimierungstechniken umfassen.
Selbstreparatursysteme: Integrieren Sie Selbstreparaturfunktionen in Ihr System, indem Sie den Wiederherstellungsprozess für bekannte Leistungsprobleme automatisieren. Diese Funktion kann das automatische Korrigieren oder Anpassen der Systemkonfiguration umfassen, um eine optimale Leistung wiederherzustellen.
Behandeln von technischen Schulden
Technische Schulden beziehen sich auf die akkumulierten Ineffizienzen, suboptimalen Entwurfsentscheidungen oder Tastenkombinationen, die während des Entwicklungsprozesses vorgenommen wurden und sich auf die Leistung auswirken können. Technische Schulden, unklarer Code und zu komplexe Implementierungen können die Leistungseffizienz erschweren. Die Behebung technischer Schulden umfasst die Identifizierung und Lösung dieser Probleme, um die Gesamtleistung und Wartbarkeit der Workload zu verbessern. Diese Arbeit kann das Refactoring von Code, das Optimieren von Datenbankabfragen, die Verbesserung des Architekturentwurfs oder die Implementierung bewährter Methoden umfassen. Vielleicht haben Sie technische Schulden eingeführt, um einen Stichtag einzuhalten, aber Sie müssen die technischen Schulden beheben, um die Leistungseffizienz im Laufe der Zeit zu optimieren.
Optimieren von Datenbanken
Die kontinuierliche Optimierung von Datenbanken umfasst das Identifizieren und Implementieren von Optimierungen, um sicherzustellen, dass Datenbanken Lasten verarbeiten, schnelle Antwortzeiten bereitstellen und die Ressourcenauslastung minimieren können. Durch die regelmäßige Optimierung von Datenbanken können Sie die Anwendungsleistung verbessern, Ausfallzeiten reduzieren und die Allgemeine Benutzerfreundlichkeit verbessern.
Optimieren von Datenbankabfragen: Schlecht geschriebene SQL-Anweisungen können die Datenbankleistung beeinträchtigen. Ineffiziente JOIN-Bedingungen können zu einer nicht benötigten Datenverarbeitung führen. Komplexe Unterabfragen, geschachtelte Abfragen und übermäßige Funktionen können die Ausführungsgeschwindigkeit verringern. Abfragen, die zu viele Daten abrufen, sollten umgeschrieben werden. Sie sollten Ihre häufigsten oder kritischsten Datenbankabfragen identifizieren und optimieren. Die Optimierung trägt dazu bei, schnellere Abfragen sicherzustellen.
Verwalten von Indizes: Bewerten Sie Ihre Indizierungsstrategie, um sicherzustellen, dass die Indizes ordnungsgemäß entworfen und verwaltet werden. Die Indexwartung umfasst das Identifizieren nicht verwendeter oder redundanter Indizes und das Erstellen von Indizes, die den Abfragemustern entsprechen. Datenbankindizes helfen beim Beschleunigen von Datenabrufvorgängen. Für relationale Datenbanken müssen Sie die Indexfragmentierung überwachen. Sie sollten Indizes regelmäßig neu erstellen oder neu organisieren. Für nicht relationale Datenbanken müssen Sie die richtige Indizierungsrichtlinie für Ihre Workload auswählen. Verwenden Sie die automatische Optimierung für Datenbanken, sofern verfügbar. Zu diesen Features gehören das automatische Erstellen fehlender Indizes, das Löschen nicht verwendeter Indizes und die Plankorrektur. Weitere Informationen finden Sie unter Verwalten von Indizes zur Verbesserung der Leistung.
Überprüfen des Modellentwurfs: Überprüfen Sie das Datenmodell, um sicherzustellen, dass Sie es für die spezifischen Anforderungen der Anwendung optimieren. Die Verbesserung der Abfrageleistung und des Datenabrufs kann eine Denormalisierung, Partitionierung oder andere Techniken umfassen.
Optimieren der Datenbankkonfiguration: Optimieren Sie Datenbankkonfigurationseinstellungen wie Speicherbelegung, Datenträger-E/A und Parallelitätseinstellungen, um die Leistung und Ressourcennutzung zu maximieren.
Optimieren der Dateneffizienz
Die Optimierung der Dateneffizienz ist der Prozess, um sicherzustellen, dass Daten auf die effizienteste Weise gespeichert, verarbeitet und abgerufen werden. Das Datentiering und die Verwendung der Gültigkeitsdauer (Time-to-Live, TTL) sind Techniken, mit denen die Dateneffizienz optimiert werden kann. Sie können diese Techniken in verschiedenen Datenspeicherszenarien anwenden, z. B. Datenbanken, Dateisysteme oder Objektspeicher.
Datentiering verwenden: Beim Datentiering werden Daten basierend auf ihrer Wichtigkeit oder Häufigkeit des Zugriffs kategorisiert und entsprechend auf verschiedenen Ebenen gespeichert. Das Einrichten des Datentierings ermöglicht eine effizientere Nutzung von Speicherressourcen und verbessert die Leistung. Häufig verwendete oder kritische Daten können auf Hochleistungsebenen gespeichert werden, während weniger häufig auf oder weniger kritische Daten in kostengünstigeren Tarifen gespeichert werden können. Das Ziel besteht darin, die Datennutzung im Laufe der Zeit zu überprüfen, um sicherzustellen, dass sich die Daten auf der richtigen Ebene befinden. Wenn sich Datenprioritäten ändern, sollten Daten von einer Ebene in eine andere verschoben werden.
Implementieren der Gültigkeitsdauer: Die Gültigkeitsdauer ist ein Mechanismus, der eine Ablaufzeit für Daten festlegt. Die Gültigkeitsdauer ermöglicht das automatische Löschen oder Archivieren von Daten nach einem bestimmten Zeitraum, wodurch der Speicherbedarf reduziert und die Datenverwaltung verbessert wird. Indem Sie eine geeignete Gültigkeitsdauer festlegen, lassen Sie das Entfernen unnötiger Daten zu, wodurch Speicherplatz frei wird und die Gesamteffizienz verbessert wird. Sitzungsdaten, temporäre Dateien und Cachedaten sind häufige Ziele für die Gültigkeitsdauer. Datenbankeinträge können auch eine Gültigkeitsdauer haben.
Risiko: Eine zu kurze Gültigkeitsdauer kann zu Leistungsproblemen führen.
Azure-Erleichterung
Automatisieren der Leistungsoptimierung: Azure Advisor bietet automatische Leistungsempfehlungen basierend auf Workloadtelemetriedaten. Sie sollten diese Empfehlungen regelmäßig überprüfen und berücksichtigen. Azure Monitor bietet Echtzeiteinblicke über die Leistung Ihres Systems und ermöglicht Ihnen das Einrichten von Warnungen basierend auf bestimmten Leistungsmetriken. Azure Log Analytics bietet automatisierte Diagnose und Analysen für gesammelte Protokolle und Metriken. Tools wie Azure-Anwendung Insights bieten Erkenntnisse und Empfehlungen zum Optimieren der Leistung.
Zum Automatisieren der Wartung verwenden Sie Automatisierungstools oder Skripts, um Wartungsaktionen automatisch auszuführen, wenn die Warnungen ausgelöst werden. Sie können Azure Automation, Azure Functions oder benutzerdefinierte Automatisierungslösungen verwenden.
Azure ermöglicht Leistungstests, um verschiedene Benutzerszenarien und Workloads zu simulieren. Automatisierte Tests können Ihnen dabei helfen, Leistungsengpässe zu erkennen und Ihr System entsprechend zu optimieren. Tools wie Azure DevOps können Leistungstests automatisieren.
Optimieren von Datenbanken: Die SQL-Produktfamilie verfügt über viele integrierte Features, mit denen Sie die Leistung von SQL-Datenbanken überwachen und korrigieren können. Sie sollten diese Features verwenden, um die Datenbankleistung aufrechtzuerhalten. Azure SQL-Datenbank verfügt über eine automatische Optimierungsfunktion, die Abfragen kontinuierlich überwacht und verbessert. Sie sollten dieses Feature verwenden, um SQL-Abfragen automatisch zu verbessern.
Sie können Ihre Indizierungsrichtlinien mithilfe der Features von Azure Cosmos DB anpassen. Passen Sie die Richtlinien an, um die Leistungsanforderungen Ihrer Workload zu erfüllen.
Optimieren der Dateneffizienz: Mit dem Datentiering können Sie Daten basierend auf ihrer Zugriffshäufigkeit und Wichtigkeit in verschiedenen Ebenen speichern. Sie hilft dabei, Speicherkosten und -leistung zu optimieren. Azure stellt verschiedene Speicherebenen bereit, z. B. die Ebenen "Heiß", "Kalt" und "Archiv" für Blobdaten. Heiße Ebenen sind für häufig verwendete Daten optimiert, kalte Tarife für selten verwendete Daten und Archivebenen für selten verwendete Daten. Durch Die Verwendung der Speicherzugriffsebene, die für Ihre Daten am besten geeignet ist, können Sie eine effiziente Datenspeicherung und -abruf gewährleisten.
Verwandte Links
- Optimale Wartung von Indizes zum Verbessern der Leistung und Verringern der Ressourcenauslastung
- Verbessern der Leistung von Azure-Anwendungen mit Azure Advisor
- Automatische Optimierung bei Azure SQL-Datenbank und Azure SQL Managed Instance
- Indexing policies in Azure Cosmos DB (Indizierungsrichtlinien in Azure Cosmos DB)
Prüfliste zur Leistungseffizienz
Sehen Sie sich den vollständigen Satz von Empfehlungen an.