Latenzdiagnose mithilfe von Messwerten

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 sich diese Messwerte in der Google Cloud Console und in der Cloud Monitoring Console ansehen.

Übersicht über die Latenzmesswerte

Die Latenzmesswerte für Spanner geben an, wie lange der Spanner-Dienst benötigt, um eine Anfrage zu verarbeiten. Der Messwert erfasst die tatsächliche Zeit, die verstrichen ist, und nicht die CPU-Zeit, die Spanner verwendet.

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

Sie können sich Diagramme mit Latenzmesswerten in der Google Cloud Console und in der Cloud Monitoring Console ansehen. 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 die Latenz des 50. Perzentils beispielsweise 0,5 Sekunden beträgt, verarbeitet Spanner 50% der Anfragen in weniger als 0,5 Sekunden.

    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 die Latenz des 99. Perzentils beispielsweise 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.

Wenn Sie einen kurzen Überblick über die Latenzmesswerte einer Instanz erhalten möchten, verwenden Sie die Google Cloud Console. 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 bei Ihrer Anwendung eine höhere Latenz als erwartet auftritt, die Latenzmesswerte für Spanner aber deutlich niedriger als die gesamte End-to-End-Latenz sind, liegt möglicherweise ein Problem in Ihrem 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 dann die Gesamtlatenz noch einmal messen. Wenn sich die Gesamtlatenz nur geringfügig ändert, ist Spanner wahrscheinlich nicht die Ursache für die hohe Latenz.

Hohe Gesamtlatenz, hohe Spanner-Latenz

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

  • Ihre Instanz benötigt mehr Rechenkapazität. Wenn Ihre Instanz nicht genügend CPU-Ressourcen hat 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 Ihre Abfragen keine Spanner-Features nutzen, die die Effizienz verbessern (z. B. Abfrageparameter und sekundäre Indexe) oder eine große Anzahl von Joins oder andere CPU-intensive Vorgänge enthalten, können die Abfragen einen großen Teil der CPU-Ressourcen für die Instanz in Anspruch nehmen.

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