cpu - Amazon Aurora

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

cpu

Das cpu Warteereignis tritt ein, wenn ein Thread in aktiv ist CPU oder auf ihn wartetCPU.

Unterstützte Engine-Versionen

Diese Warteereignisinformationen werden für die folgenden Engine-Versionen unterstützt:

  • Aurora Meine SQL Versionen 2 und 3

Kontext

Für jedes V CPU kann eine Verbindung darauf ausgeführt CPU werden. In manchen Situationen ist die Anzahl der aktiven Verbindungen, die betriebsbereit sind, höher als die Anzahl dervCPUs. Dieses Ungleichgewicht führt dazu, dass Verbindungen auf CPU Ressourcen warten. Wenn die Anzahl der aktiven Verbindungen durchweg höher bleibt als die Anzahl dervCPUs, kommt es in Ihrer Instance zu CPU Konflikten. Der Konflikt bewirkt, dass das cpu-Warteereignis auftritt.

Anmerkung

Die Performance Insights Insights-Metrik für CPU istDBLoadCPU. Der Wert für DBLoadCPU kann sich vom Wert für die CloudWatch Metrik unterscheidenCPUUtilization. Die letztere Metrik wird aus der HyperVisor für eine Datenbank-Instance erfasst.

Die Betriebssystemmetriken von Performance Insights bieten detaillierte Informationen zur CPU Auslastung. Sie können beispielsweise die folgenden Metriken anzeigen:

  • os.cpuUtilization.nice.avg

  • os.cpuUtilization.total.avg

  • os.cpuUtilization.wait.avg

  • os.cpuUtilization.idle.avg

Performance Insights meldet die CPU Nutzung durch die Datenbank-Engine alsos.cpuUtilization.nice.avg.

Wahrscheinliche Ursachen für erhöhte Wartezeiten

Wenn das Ereignis mehr als normal auftritt, was möglicherweise auf ein Leistungsproblem hinweist, sind die folgenden typischen Ursachen:

  • Analytische Abfragen

  • Hochgradig gleichzeitige Transaktionen

  • Langlebige Transaktionen

  • Ein plötzlicher Anstieg der Anzahl von Verbindungen, bekannt als Login-Sturm

  • Eine Zunahme des Kontextwechsels

Aktionen

Wenn das cpu-Wait-Ereignis die Datenbankaktivität dominiert, weist dies nicht unbedingt auf ein Leistungsproblem hin. Reagieren Sie auf dieses Ereignis nur, wenn sich die Leistung verschlechtert.

Abhängig von der Ursache der erhöhten CPU Auslastung sollten Sie die folgenden Strategien in Betracht ziehen:

  • Erhöhen Sie die CPU Kapazität des Hosts. Dieser Ansatz bietet normalerweise nur vorübergehende Erleichterung.

  • Identifizieren Sie Top-Abfragen zur möglichen Optimierung.

  • Leiten Sie ggf. einen schreibgeschützten Workload auf Reader-Knoten um.

Identifizieren Sie die Sitzungen oder Abfragen, die das Problem verursachen

Um die Sitzungen und Abfragen zu finden, suchen Sie in der SQL Tabelle Top in Performance Insights nach den SQL Anweisungen mit der höchsten CPU Auslastung. Weitere Informationen finden Sie unter Analyse der Metriken mit dem Performance Insights-Dashboard.

In der Regel nehmen eine oder zwei SQL Anweisungen die meisten CPU Zyklen in Anspruch. Konzentrieren Sie sich auf diese Anweisungen. Angenommen, Ihre DB-Instance hat 2 vCPUs mit einer durchschnittlichen Datenbanklast von 3,1 aktiven Sitzungen (AAS), die sich alle im CPU Status befinden. In diesem Fall ist Ihre Instance CPU gebunden. Berücksichtigen Sie dabei die folgenden Strategien:

  • Führen Sie ein Upgrade auf eine größere Instanzklasse mit mehr ausvCPUs.

  • Passen Sie Ihre Abfragen so an, dass sie weniger CPU belastet werden.

In diesem Beispiel haben die SQL häufigsten Abfragen eine DB-Auslastung von 1,5AAS, alle im CPU Status. Eine andere SQL Anweisung hat im CPU Status eine Last von 0,1. Wenn Sie in diesem Beispiel die SQL Anweisung mit der niedrigsten Auslastung beendet haben, reduzieren Sie die Datenbanklast nicht wesentlich. Wenn Sie jedoch die beiden Abfragen mit hoher Auslastung so optimieren, dass sie doppelt so effizient sind, beseitigen Sie den Engpass. CPU Wenn Sie die CPU Last AAS von 1,5 um 50 Prozent reduzieren, sinkt der Wert AAS für jede Anweisung auf 0,75. Die Gesamtdatenbanklast für CPU beträgt jetzt 1,6AAS. Dieser Wert liegt unter der maximalen CPU V-Linie von 2,0.

Einen nützlichen Überblick über die Fehlerbehebung mit Performance Insights finden Sie im Blogbeitrag Analysieren Sie Amazon Aurora My SQL Workloads with Performance Insights. Lesen Sie auch den AWS Support-Artikel Wie kann ich Fehler beheben und Probleme mit hoher CPU Auslastung auf meinen Amazon RDS for My SQL Instances beheben? .

Analysieren und optimieren Sie den hohen CPU Arbeitsaufwand

Nachdem Sie die Abfrage oder Abfragen identifiziert haben, die die CPU Nutzung erhöhen, können Sie sie entweder optimieren oder die Verbindung beenden. Das folgende Beispiel zeigt, wie Sie eine Verbindung beenden.

CALL mysql.rds_kill(processID);

Weitere Informationen finden Sie unter mysql.rds_kill.

Wenn Sie eine Sitzung beenden, löst die Aktion möglicherweise einen langen Rollback aus.

Befolgen Sie die Richtlinien für die Optimierung von Abfragen

Beachten Sie die folgenden Richtlinien, um Abfragen zu optimieren:

  • Ausführen der EXPLAIN-Anweisung.

    Dieser Befehl zeigt die einzelnen Schritte an, die beim Ausführen einer Abfrage beteiligt sind. Weitere Informationen finden Sie unter Abfragen optimieren mit EXPLAIN in der SQL Dokumentation Meine Daten.

  • Ausführen der SHOW PROFILE-Anweisung.

    Verwenden Sie diese Anweisung, um Profildetails zu überprüfen, die die Ressourcennutzung für Anweisungen angeben können, die während der aktuellen Sitzung ausgeführt werden. Weitere Informationen finden Sie in der SQL Dokumentation zu My unter SHOWPROFILEStatement.

  • Ausführen der ANALYZE TABLE-Anweisung.

    Verwenden Sie diese Anweisung, um die Indexstatistiken für die Tabellen zu aktualisieren, auf die mit der CPU aufwändigen Abfrage zugegriffen wurde. Durch die Analyse der Anweisung können Sie dem Optimierer bei der Auswahl eines geeigneten Ausführungsplans helfen. Weitere Informationen finden Sie unter ANALYZETABLEAussage in der SQL Dokumentation „Meine“.

Folgen Sie den Richtlinien zur Verbesserung der CPU Nutzung

Um die CPU Nutzung in einer Datenbank-Instance zu verbessern, folgen Sie diesen Richtlinien:

  • Stellen Sie sicher, dass alle Abfragen die richtigen Indizes verwenden.

  • Finden Sie heraus, ob Sie parallele Aurora-Abfragen verwenden können. Sie können diese Technik verwenden, um die CPU Nutzung auf dem Hauptknoten zu reduzieren, indem Sie die Funktionsverarbeitung, die Zeilenfilterung und die Spaltenprojektion für die WHERE Klausel nach unten verschieben.

  • Finden Sie heraus, ob die Anzahl der SQL Ausführungen pro Sekunde die erwarteten Schwellenwerte erreicht.

  • Finden Sie heraus, ob die Indexverwaltung oder die Erstellung neuer Indizes die CPU Zyklen in Anspruch nehmen, die für Ihre Produktionslast erforderlich sind. Planen Sie Wartungsaktivitäten außerhalb der Spitzenzeiten.

  • Finden Sie heraus, ob Sie die Partitionierung verwenden können, um den Abfragedatensatz zu reduzieren. Weitere Informationen finden Sie im Blogbeitrag So planen und optimieren Sie Amazon Aurora mit meiner SQL Kompatibilität für konsolidierte Workloads.

Auf Verbindungsströme überprüfen

Wenn die DBLoadCPU Metrik nicht sehr hoch, aber die CPUUtilization Metrik hoch ist, liegt die Ursache für die hohe CPU Auslastung außerhalb der Datenbank-Engine. Ein klassisches Beispiel ist ein Verbindungssturm.

Prüfen Sie, ob die folgenden Bedingungen zutreffen:

  • Sowohl bei der Performance Insights CPUUtilization Insights-Metrik als auch bei der CloudWatch DatabaseConnections Amazon-Metrik ist ein Anstieg zu verzeichnen.

  • Die Anzahl der Threads in der CPU ist größer als die Anzahl vonvCPUs.

Wenn die vorhergehenden Bedingungen zutreffen, sollten Sie erwägen, die Anzahl der Datenbankverbindungen zu verringern. Sie können beispielsweise einen Verbindungspool wie RDS Proxy verwenden. Informationen zu den Best Practices für effektives Verbindungsmanagement und Skalierung finden Sie im Whitepaper Amazon Aurora My SQL DBA Handbook for Connection Management.