Latenz mithilfe von Messwerten diagnostizieren

Auf dieser Seite werden die von Spanner bereitgestellten Latenzmesswerte beschrieben. Wenn in Ihrer Anwendung eine hohe Latenz auftritt, können Sie das Problem mithilfe dieser Messwerte diagnostizieren und beheben.

Sie können diese Messwerte in der Google Cloud Console und in der Cloud Monitoring Console aufrufen.

Übersicht über die Latenzmesswerte

Die Latenzmesswerte für Spanner geben an, wie lange es gedauert hat, bis der Spanner-Dienst eine Anfrage verarbeitet hat. Der Messwert erfasst die tatsächlich verstrichene Zeit und nicht die von Spanner verwendete CPU-Zeit.

Diese Latenzmesswerte umfassen keine Latenzzeiten, die außerhalb von Spanner auftreten, z. B. Netzwerklatenzzeiten oder Latenzzeiten in Ihrer Anwendungsebene. Zum Messen anderer Latenzarten können Sie Cloud Monitoring verwenden, um Ihre Anwendung mit benutzerdefinierten Messwerten zu messen.

Sie können Diagramme der Latenzmesswerte in der Google Cloud Console und in der Cloud Monitoring Console anzeigen. Sie können sich kombinierte Latenzmesswerte, die sowohl Lese- als auch Schreibvorgänge umfassen, oder separate Messwerte für Lese- und Schreibvorgänge anzeigen lassen.

Basierend auf der Latenz jeder Anfrage gruppiert Spanner die Anfragen in Perzentile. Sie können sich Latenzmesswerte für die Latenz des 50. Perzentils und des 99. Perzentils anzeigen lassen:

  • Latenz des 50. Perzentils: Die maximale Latenz in Sekunden für die schnellsten 50 % aller Anfragen. Wenn beispielsweise die Latenz des 50. Perzentils 0,5 Sekunden beträgt, hat Spanner 50% der Anfragen in weniger als 0,5 Sekunden verarbeitet.

    Dieser Messwert wird manchmal als mittlere Latenz bezeichnet.

  • Latenz des 99. Perzentils: Die maximale Latenz in Sekunden für die schnellsten 99 % der Anfragen. Wenn beispielsweise die Latenz des 99. Perzentils 2 Sekunden beträgt, hat Spanner 99% der Anfragen in weniger als 2 Sekunden verarbeitet.

Latenz und Vorgänge pro Sekunde

Wenn eine Instanz eine kleine Anzahl von Anfragen innerhalb eines bestimmten Zeitraums verarbeitet, sind die Latenzen des 50. und 99. Perzentils in diesem Zeitraum keine aussagekräftigen Indikatoren für die Gesamtleistung der Instanz. Unter diesen Umständen kann eine sehr kleine Anzahl von Ausreißern die Latenzmesswerte drastisch ändern.

Angenommen, eine Instanz verarbeitet 100 Anfragen innerhalb einer Stunde. In diesem Fall entspricht die Latenz des 99. Perzentils für die Instanz in dieser Stunde der Zeit, die für die Verarbeitung der langsamsten Anfrage benötigt wurde. Eine Latenzmessung auf Basis einer einzelnen Anfrage ist nicht aussagekräftig.

Latenzprobleme diagnostizieren

In den folgenden Abschnitten wird beschrieben, wie Sie einige häufig auftretende Probleme diagnostizieren, die zu einer hohen End-to-End-Latenz Ihrer Anwendung führen können.

Mit der Google Cloud Console können Sie einen kurzen Blick auf die Latenzmesswerte einer Instanz werfen. Wenn Sie die Messwerte genauer untersuchen und nach Korrelationen zwischen Latenz und anderen Messwerten durchsuchen möchten, verwenden Sie die Cloud Monitoring Console.

Hohe Gesamtlatenz, niedrige Spanner-Latenz

Wenn in Ihrer Anwendung eine höhere Latenz als erwartet auftritt, die Latenzmesswerte für Spanner jedoch erheblich niedriger sind als die gesamte End-to-End-Latenz, liegt möglicherweise ein Problem im Anwendungscode vor. Wenn Ihre Anwendung ein Leistungsproblem hat, das dazu führt, dass einige Codepfade langsam sind, kann sich die Gesamtwartezeit für jede Anfrage erhöhen.

Sie können dieses Problem beheben, indem Sie bei Ihrer Anwendung einen Leistungstest durchführen, um Codepfade zu identifizieren, die langsamer als erwartet sind.

Sie können auch den Code auskommentieren, der mit Spanner kommuniziert, und anschließend die Gesamtlatenz noch einmal messen. Wenn sich die Gesamtlatenz nicht wesentlich ändert, ist es unwahrscheinlich, dass Spanner die Ursache für die hohe Latenz ist.

Hohe Gesamtlatenz, hohe Spanner-Latenz

Wenn in Ihrer Anwendung eine höhere Latenz als erwartet auftritt und die Spanner-Latenzmesswerte ebenfalls hoch sind, gibt es einige wahrscheinliche Ursachen:

  • Ihre Instanz benötigt mehr Rechenkapazität. Wenn Ihre Instanz nicht über genügend CPU-Ressourcen verfügt und die CPU-Auslastung das empfohlene Maximum überschreitet, kann Spanner Ihre Anfragen möglicherweise nicht schnell und effizient verarbeiten.

  • Einige Ihrer Abfragen verursachen eine hohe CPU-Auslastung. Wenn bei Ihren Abfragen keine Spanner-Funktionen zur Effizienzsteigerung wie Abfrageparameter und sekundäre Indexe verwendet werden oder wenn sie eine große Anzahl von Joins oder andere CPU-intensive Vorgänge enthalten, können die Abfragen einen großen Teil der CPU-Ressourcen Ihrer Instanz beanspruchen.

Verwenden Sie die Cloud Monitoring Console, um nach einer Korrelation zwischen hoher CPU-Auslastung und hoher Latenz zu suchen. Überprüfen Sie außerdem die Abfragestatistik für die Instanz, um alle CPU-intensiven Abfragen im selben Zeitraum zu ermitteln.

Wenn die CPU-Auslastung und die Latenzzeit gleichzeitig hoch sind, können Sie das Problem so beheben:

Nächste Schritte