Cloud SQL-Leistungserfassung – Übersicht

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

Wenn die Leistung Ihrer Instanz nachlässt, z. B. durch eine Verlangsamung oder einen Stillstand der Datenbank, reichen Standardmesswerte möglicherweise nicht aus, um die Ursache zu ermitteln. Die Leistungserfassung löst dieses Problem, indem sie detaillierte Momentaufnahmen der Datenbank zu dem Zeitpunkt erfasst, an dem ein Problem erkannt wird. Sie können konfigurierbare Trigger verwenden, um systemweite Momentaufnahmen zu erstellen, wenn vorübergehende Probleme auftreten, und um Transaktionen mit langer Ausführungszeit zu erkennen.

Beispielanwendungsfälle

In diesem Abschnitt werden Beispielanwendungsfälle für die Verwendung der Leistungserfassung aufgeführt, nachdem Sie sie für Ihre Instanz aktiviert haben.

Stillstand der Datenbank diagnostizieren

Problem: Eine Instanz reagiert seit mehreren Minuten nicht mehr, aber die Messwerte zeigen nur einen Rückgang der Abfragen pro Sekunde und eine Zunahme der Verbindungen.

Beispielnutzung: Definieren Sie einen Schwellenwert-Trigger mit runningThreadsThreshold. Das Leistungserfassungsprotokoll zeigt eine hohe Anzahl von Semaphor-Wartezeiten, was auf eine bestimmte Mutex-Konkurrenz (z. B. für den adaptiven Hash-Index) als Ursache hinweist.

Abfrageverschlechterung analysieren

Problem: Die Abfrageleistung verschlechtert sich plötzlich systemweit.

Beispielnutzung: Das Leistungserfassungsprotokoll zeigt eine einzelne, lang andauernde Transaktion, bei der eine große Anzahl von Undo-Logs angefallen ist. Das Protokoll enthält Informationen zur lang andauernden Transaktion, zum Nutzer und zum Abfragetext.

Replikationsverzögerung untersuchen

Problem: Ein Lesereplikat fällt deutlich hinter seine Quelle zurück.

Beispielnutzung: Sie konfigurieren einen hohen Wert Schwellenwert für secondsBehindSourceThreshold. Im Leistungserfassungsprotokoll können Sie die spezifische GTID ermitteln, die die Verzögerung verursacht.

Transaktionen mit langer Ausführungszeit verwalten

Problem: Ein Batchjob oder eine Nutzerabfrage wird übermäßig lange ausgeführt und hält Sperren.

Beispielnutzung: Sie konfigurieren einen Schwellenwert-Trigger für transactionDurationThreshold. Das Leistungserfassungsprotokoll identifiziert die Transaktion, die den Schwellenwert überschreitet. Anhand dieser Informationen können Sie das Problem untersuchen.

Leistungsdaten erfassen

Die Leistungserfassung ist ein 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. Anschließend prüft der Agent die Messwerte Ihrer Datenbank in einem konfigurierbaren Intervall, 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 Prüfungen erkennt. Der Agent kann beispielsweise eine Leistungserfassung auslösen, wenn er bei drei aufeinanderfolgenden Prüfungen feststellt, dass die Anzahl der Threads 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 eine detaillierte Momentaufnahme zu erstellen.

  4. Die erfassten Informationen werden in Logeinträge formatiert und direkt an Cloud Logging des Projekts für die Cloud SQL-Instanz unter einem bestimmten Logstream mit dem Namen 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 beispielsweise den Schwellenwert so konfigurieren, dass die Leistungserfassung ausgeführt wird, wenn die Anzahl der aktiven Threads 100 übersteigt.

  • secondsBehindSourceThreshold: Wird für Replikate ausgelöst, wenn die Replikationsverzögerung die angegebene Anzahl von Sekunden überschreitet. Sie können beispielsweise den Schwellenwert 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 ausgeführt werden. Sie können beispielsweise den Trigger so einrichten, dass jede einzelne Transaktion protokolliert wird, die länger als 10 Minuten dauert.

Wartezeit nach einer Leistungserfassung

Um übermäßiges Logging und System-Overhead bei einem anhaltenden Leistungsereignis zu vermeiden, wird nach einer erfolgreichen Momentaufnahme eine Wartezeit von 30 Minuten implementiert. Diese Wartezeit wird automatisch aktiviert, um zu verhindern, dass der Agent neue, redundante Erfassungen 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 Cloud Logging, finden Sie unter Preise.

Beschränkungen

  • Sie müssen Query Insights 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