Cloud SQL-Leistungserfassung – Übersicht

Mit der Cloud SQL for MySQL-Leistungserfassung können Sie komplexe und vorübergehende Leistungsprobleme in Ihrer MySQL-Datenbank diagnostizieren und beheben.

Wenn die Leistung Ihrer Instanz nachlässt, z. B. wenn die Datenbank langsamer wird oder nicht mehr reagiert, reichen Standardmesswerte möglicherweise nicht aus, um die Ursache zu ermitteln. Mit der Leistungserfassung wird dieses Problem behoben, indem detaillierte Momentaufnahmen der Datenbank zu dem Zeitpunkt erstellt werden, zu dem ein Problem erkannt wird. Sie können konfigurierbare Trigger verwenden, um systemweite Snapshots zu erstellen, wenn vorübergehende Probleme auftreten, und um lang andauernde Transaktionen zu erkennen.

Beispielanwendungsfälle

In diesem Abschnitt finden Sie Beispiele für Anwendungsfälle, in denen Sie die Leistungserfassung nutzen können, nachdem Sie sie für Ihre Instanz aktiviert haben.

Datenbank-Stillstand diagnostizieren

Problem: Eine Instanz reagiert seit mehreren Minuten nicht mehr. Die Messwerte zeigen jedoch nur einen Rückgang der Abfragen pro Sekunde und einen Anstieg der Verbindungen.

Beispiel für die Verwendung: Definieren Sie einen Schwellenwert-Trigger mit runningThreadsThreshold. Das Protokoll zur Leistungserfassung zeigt eine hohe Anzahl von Semaphor-Wartevorgängen, was auf einen bestimmten Mutex-Konflikt (z. B. im adaptiven Hash-Index) als Ursache hinweist.

Verschlechterung der Abfrageleistung analysieren

Problem: Die Abfrageleistung verschlechtert sich plötzlich systemweit.

Beispiel für die Verwendung: Das Log zur Leistungserfassung enthält eine einzelne, lang andauernde Transaktion, bei der eine große Anzahl von Undo-Logs angefallen ist. Das Log enthält Informationen zur lang andauernden Transaktion, zum Nutzer und zum Abfragetext.

Replikationsverzögerung untersuchen

Problem: Ein Lesereplikat hinkt seiner Quelle deutlich hinterher.

Beispiel für die Verwendung: Sie konfigurieren einen hohen Auslöseschwellenwert für secondsBehindSourceThreshold. Im Log für die Leistungserfassung können Sie die spezifische GTID ermitteln, die die Verzögerung verursacht.

Lang andauernde Transaktionen verwalten

Problem: Ein Batchjob oder eine Nutzeranfrage wird über einen längeren Zeitraum ausgeführt und hält Sperren.

Beispiel für die Verwendung: Sie konfigurieren einen Schwellenwert-Trigger für transactionDurationThreshold. Im Protokoll zur Leistungserfassung wird die Transaktion angegeben, die den Schwellenwert überschreitet. Sie können diese Informationen zur Untersuchung verwenden.

So werden Leistungsdaten erfasst

Die Leistungserfassung funktioniert als agentbasierter Dienst, der Ihre Instanz überwacht. Wenn Sie die Leistungserfassung aktivieren, führt Ihre Cloud SQL-Instanz die folgenden Schritte aus, um Leistungsdaten zu erfassen:

  1. Der Agent prüft Ihre Datenbankkonfiguration, um die von Ihnen definierten Trigger zu lesen. Der Agent fragt dann die Messwerte Ihrer Datenbank in einem konfigurierbaren Intervall ab, das standardmäßig auf 30 Sekunden festgelegt ist.

  2. Wenn ein Problem erkannt wird und der Schwellenwert eines Triggers überschritten wurde, vergleicht der Agent den Live-Status der Datenbank weiterhin mit Ihren Regeln. Um Fehlalarme durch vorübergehende Spitzen zu vermeiden, löst der Agent nur dann eine vollständige Leistungserfassung aus, wenn er das Problem bei einer bestimmten Anzahl aufeinanderfolgender Tests erkennt. Der Agent kann beispielsweise eine Leistungserfassung auslösen, wenn er erkennt, dass die Anzahl der Threads für drei Probes in Folge hoch ist.

  3. Wenn eine Leistungserfassung ausgelöst wird, stellt der Agent eine Verbindung zur Datenbank her und führt eine Reihe von Diagnosebefehlen aus, um einen detaillierten Snapshot zu erstellen.

  4. Die erfassten Informationen werden in Logeinträge formatiert und direkt an Cloud Logging für die Cloud SQL-Instanz des Projekts in einem bestimmten Logstream namens mysql-performance-capture.log gesendet.

Konfigurierbare Trigger

Sie können die folgenden Trigger für die Leistungserfassung konfigurieren:

  • runningThreadsThreshold: Wird ausgelöst, wenn die Anzahl der aktiven Threads, die auf einer primären Instanz ausgeführt werden, den angegebenen Wert überschreitet. Sie können den Schwellenwert beispielsweise so konfigurieren, dass die Leistungserfassung ausgeführt wird, wenn die Anzahl der aktiven Threads, die ausgeführt werden, 100 überschreitet.

  • secondsBehindSourceThreshold: Trigger für Replikate, wenn die Replikationsverzögerung die angegebene Anzahl von Sekunden überschreitet. Sie können den Schwellenwert beispielsweise so konfigurieren, dass die Leistungserfassung ausgeführt wird, wenn die Verzögerung des Lesereplikats mehr als 300 Sekunden beträgt.

  • transactionDurationThreshold: Löst das Logging für einzelne Transaktionen aus, die länger als die angegebene Dauer dauern. Sie können den Trigger beispielsweise so einrichten, dass jede einzelne Transaktion protokolliert wird, die länger als 10 Minuten dauert.

Wartezeit nach einer Leistungserfassung

Um übermäßiges Logging und Systemaufwand während eines anhaltenden Leistungsereignisses zu vermeiden, wird nach einer erfolgreichen Snapshot-Erfassung eine 30-minütige Abkühlungsphase implementiert. Diese Ruhephase wird automatisch aktiviert, um zu verhindern, dass der Agent neue, redundante Aufnahmen auslöst, während sich das System in einem längeren Problemzustand befindet.

Preise

Bei der Leistungserfassung werden Logs in Cloud Logging gespeichert, was zusätzliche Speicherkosten verursachen kann.

Weitere Informationen zu den Preisen für das Speichern von Logs in Logging finden Sie unter Preise.

Beschränkungen

  • Sie müssen Abfragestatistiken aktiviert haben, um die Leistungserfassung verwenden zu können. Wenn Sie Query Insights deaktivieren, wird auch die Leistungserfassung deaktiviert.
  • Die Leistungserfassung ist nur für Cloud SQL for MySQL 5.7 und höher verfügbar.

Nächste Schritte