Fehlerbehebung bei Latenz

Wie bei jedem Datenbanksystem kann es auch bei Bigtable zu Latenzproblemen kommen. In diesem Dokument werden häufige Ursachen für Latenzprobleme in Bigtable erläutert und es wird beschrieben, wie Sie diese beheben können.

Diagnostizieren und beheben Sie Bigtable-Latenzprobleme mithilfe der Schritte zur Fehlerbehebung in den folgenden Abschnitten:

Ursachen für hohe Latenz verstehen

Die folgenden Faktoren tragen zu Latenzproblemen in Bigtable bei:

  • Serverlatenz: Die Messung der Serverlatenz beginnt, wenn Bigtable die Anfrage empfängt, und endet, wenn Bigtable das letzte Datenbyte an den Client sendet. Bei Anfragen für große Datenmengen kann die Fähigkeit des Clients, die Antwort zu verarbeiten, die Serverlatenz beeinflussen.
  • Vorgangslatenzen messen die gesamte End-to-End-Zeit für einen Bigtable-Vorgang, einschließlich aller Wiederholungsversuche. Dieser Messwert erfasst die Umlaufdaten vom Client zu Bigtable und zurück zum Client. Die Latenz Ihrer Anwendung, die Netzwerkverbindung, die Latenz der Bigtable-Clientbibliothek und die Serverlatenzen wirken sich alle auf die Vorgangslatenz aus.
  • Arbeitslast- und Anfragemuster können die Latenz nicht nur aufgrund eines Infrastrukturproblems erhöhen, sondern auch aufgrund einer Änderung des Arbeitsmusters, das die Anwendung anfordert. Beispielsweise kann eine dynamisch generierte Scanabfrage, die zuvor hundert Zeilen gescannt hat, aufgrund eines kürzlich erfolgten Datenimports oder einer Änderung der Anwendungslogik jetzt eine Million Zeilen scannen. Das System arbeitet zwar effizient, aber die erhebliche Zunahme des Arbeitsaufwands für einen einzelnen Vorgang führt zu einer längeren Ausführungszeit, die Bigtable als höhere Latenz wahrnimmt.

Hinweis

Führen Sie die folgenden Aufgaben aus, um Probleme mit hoher Latenz zu beheben:

  • Aktivieren Sie clientseitige Messwerte für Ihre Clientbibliothek, um die Leistung zu optimieren und Probleme zu beheben.
  • Prüfen Sie, ob sich Ihre Anwendung in derselben Zone wie Ihr Bigtable-Cluster befindet, um die Netzwerklatenz zu minimieren. Dadurch wird die Netzwerkentfernung zwischen Ihrer Anwendung und Ihrem Cluster verringert, was die Antwortzeiten für Anfragen verbessert.
  • Beschaffen Sie die folgenden Informationen zu Ihrer Bigtable-Umgebung:
  • Ermitteln Sie die folgenden Informationen zu Ihrer clientseitigen Umgebung:
  • Beschaffen Sie die folgenden Informationen zum Problem:

Latenzprobleme beheben

Wenn in Bigtable Latenzprobleme auftreten, führen Sie die folgenden Schritte zur Fehlerbehebung aus:

  1. Serverlatenz prüfen: Rufen Sie in derGoogle Cloud Console die Seite „Monitoring“ auf, um die Serverlatenz zu sehen. Weitere Informationen finden Sie unter Mit Cloud Monitoring überwachen. Prüfen Sie die Latenz Ihrer Instanz. Wenn die Instanz mehrere Cluster enthält, schneiden Sie den Messwert nach Cluster. Wenn Sie in den Diagrammen für die Lese- oder Schreiblatenz oder in den clientseitigen Messwerten einen Anstieg der Latenz feststellen, führen Sie die Schritte zur Fehlerbehebung für die Serverlatenz im Abschnitt Fehlerbehebung bei Serverlatenz dieses Dokuments aus.
  2. Clientlatenz prüfen: Suchen Sie nach dem Aktivieren clientseitiger Messwerte im Cloud Monitoring Metrics Explorer nach bigtable.googleapis.com/client. Sehen Sie sich die verfügbaren clientseitigen Messwerte an. Wenn Sie bei clientseitigen Messwerten eine erhöhte Latenz feststellen, aber nicht auf dem Server, prüfen Sie Ihre Anwendung und Netzwerkverbindung. Weitere Informationen finden Sie im Abschnitt Fehlerbehebung bei Clientlatenz in diesem Dokument.

Das folgende Diagramm zeigt den Prozess zur Fehlerbehebung bei erhöhter Latenz in Bigtable:

Flussdiagramm zur Fehlerbehebung bei der Bigtable-Latenz.
Abbildung 1. Fehlerbehebung bei Bigtable-Latenzproblemen (zum Vergrößern klicken)

Fehlerbehebung bei Clientlatenz

So beheben Sie Probleme mit der clientseitigen Latenz:

Hinweis

Bevor Sie mit der Fehlerbehebung bei der clientseitigen Latenz beginnen, führen Sie die folgenden Aufgaben aus:

  • Clientseitige Messwerte in Bigtable aktivieren.
  • Aktivieren Sie die Kanalvorbereitung, wenn Sie eine Java-Clientversion 2.17.1 oder früher verwenden. Die Kanalaktualisierung ist ab Version 2.18.0 standardmäßig aktiviert.
  • Iterieren Sie, um die optimale Größe des Verbindungspools für Ihre Arbeitslast zu ermitteln. Unzureichende oder übermäßige Kanäle können zu hohen Versuchslatenzen führen.

Latenzen durch Anwendungsblockierung prüfen

Prüfen Sie den Messwert Application Blocking Latencies in der Google Cloud -Konsole und führen Sie eine der folgenden Aktionen aus:

  • Wenn die Latenzen, die die Anwendung blockieren, hoch sind und dem gemeldeten Latenzanstieg entsprechen, konzentrieren Sie sich auf die Fehlerbehebung clientseitiger Probleme.
  • Wenn die Latenzen, die die Anwendung blockieren, hoch sind und der Client auf einerGoogle Cloud -Infrastruktur wie GKE oder Compute Engine gehostet wird, eskalieren Sie das Problem an das entsprechende Supportteam von Google Cloud .
  • Wenn die Latenzen für die Anwendungsblockierung niedrig sind und die Bigtable-Bereitstellungslatenz ebenfalls niedrig ist, liegt der Latenzengpass wahrscheinlich in einer Zwischenkomponente des Netzwerk- oder Trafficpfads, z. B. im Netzwerk oder im Google-Frontend. Erwägen Sie, das Problem an das Google CloudNetzwerkteam zu eskalieren, um eine vollständige Paketerfassung durchzuführen und den Latenzengpass zu identifizieren.

Hohe Vorgangslatenzen beheben

  1. Wenn connectivity_error_count hoch ist, hat die Anwendung Probleme, das Google-Frontend zu erreichen. Legen Sie niedrigere RPC-Zeitlimits fest, damit die Anfrage auf verschiedenen Kanälen wiederholt werden kann.
    • Wenn das RPC-Zeitlimit zu niedrig ist, kann dies auch zu hohen Vorgangslatenzen führen. Bestimmen Sie das typische P99-RPC-Zeitlimit während des normalen Betriebs. Wenn Sie einen RPC-Zeitüberschreitungswert festlegen, der näher an diesem Benchmark liegt, können Sie die Leistung optimieren.
  2. Wenn retry_count hoch ist, prüfen Sie das Status-Tag attempt_latencies. Wenn Versuche mit DEADLINE_EXCEEDED-Fehlern fehlschlagen, ist die Anfragefrist im Vergleich zum durchschnittlichen attempt_latencies zu kurz.

In der gRPC-Thread-Warteschlange befindliche Adressanfragen

Wenn keiner der Messwerte die Norm überschreitet, werden Anfragen möglicherweise im gRPC-Thread in die Warteschlange gestellt. Das kann folgende Gründe haben:

  • Die Größe des Kanalpools ist zu klein und Anfragen werden in den gRPC-Kanälen in die Warteschlange gestellt. Weitere Informationen finden Sie unter Gepufferte Anfragen.
  • Die CPU-Auslastung der Client-VM ist hoch. Eine hohe CPU-Auslastung führt auch dazu, dass Anfragen im Client in die Warteschlange gestellt werden.

Fehlerbehebung bei Serverlatenz

Führen Sie die folgenden Schritte aus, um serverseitige Latenzprobleme zu beheben.

Prüfen, ob der Cluster überlastet ist

  1. Prüfen Sie die Diagramme Read requests und Write requests auf Änderungen bei den Abfragen pro Sekunde.
  2. Prüfen Sie im Diagramm Node count, ob sich die Anzahl der Knoten geändert hat.
  3. Prüfen Sie die Diagramme Read throughput und Write throughput auf Bandbreitenerhöhungen. Weitere Informationen finden Sie unter Leistung verstehen.
  4. Informationen dazu, wie die CPU nach Anwendungsprofil, Methode und Tabelle verwendet wird, um Leistungsprobleme zu beheben, finden Sie im Blogpost Where is your Cloud Bigtable cluster spending its CPU?.
  5. Erhöhen Sie die Knotenanzahl im betroffenen Cluster. Weitere Informationen finden Sie unter Knoten manuell hinzufügen oder entfernen und Autoscaling. Prüfen Sie, ob die durchschnittliche CPU-Auslastung unter dem empfohlenen Schwellenwert bleibt.

Auf Hotspots prüfen

Eine Hot-Tabellenreihe verwendet im Vergleich zu anderen Tabellenreihen, die diesem Knoten zugeordnet sind, einen unverhältnismäßig großen Prozentsatz der CPU eines Knotens. Diese unausgeglichene Nutzung kann auf ein unerwartet hohes Anfragevolumen für einen Zeilenbereich oder auf Fehler im Schemadesign zurückzuführen sein. Diese unausgeglichene Knotennutzung kann zu höheren Latenzen und Replikationsverzögerungen führen, die als Hotspots bezeichnet werden.

  1. Beobachten Sie Hotspots im Diagramm CPU utilization (hottest node) high granularity.
  2. Verwenden Sie zum Identifizieren von Hot-Tablets Hot-Tablets oder das Key Visualizer-Tool.
  3. Im Gegensatz zur CPU-Überlastung auf Clusterebene, die Sie häufig durch Hinzufügen weiterer Knoten (horizontale Skalierung) beheben können, sind für Hotspots möglicherweise andere Maßnahmen erforderlich. Dazu gehören das Ändern der Erstellung von Zeilenschlüsseln oder das Ändern des Schemas. Weitere Informationen finden Sie im Blogpost Hotspots in Cloud Bigtable beseitigen.

Latenz bei niedrigen Abfragen pro Sekunde beheben

Bigtable funktioniert am besten mit großen Tabellen, auf die häufig zugegriffen wird. Wenn Sie nach einem Zeitraum der Nichtnutzung Anfragen senden, kann es zu hoher Latenz kommen, während Bigtable Verbindungen wiederherstellt.

  1. Wenn die Diagramme Read requests und Write requests niedrige Abfragen pro Sekunde anzeigen, sind die Antwortzeiten wahrscheinlich länger.
  2. Beheben Sie Kaltstartprobleme, indem Sie die Best Practices unter Kaltstarts und niedrige QPS befolgen.

Anfrageeffizienz bewerten

Bewerten Sie die Effizienz von Anfragen mithilfe der Seite Zugriffsmuster und der Abfragestatistiken:

  • Auf der Seite Zugriffsmuster in der Google Cloud Console können Sie die Aufschlüsselung der Lese- und Schreibabfragetypen im Zeitverlauf (z. B. Punktlesevorgänge, kurze Scans, umgekehrte Scans, dünnbesetzte Lesevorgänge und Bulk-Lesevorgänge) überwachen und Gescannte Zeilen und Gesehene Zellen mit Zurückgegebenen Zeilen und Gesendeten Zellen für Ihre Tabellen und Anwendungsprofile vergleichen. Weitere Informationen finden Sie unter Zugriffsmuster analysieren.
  • Mit Abfragestatistiken können Sie das Verhältnis der gesehenen Zeilen zu den zurückgegebenen Zeilen und der gesehenen Zellen zu den zurückgegebenen Zellen für einzelne Leseanfragen prüfen. Verbessern Sie die Effizienz von Anfragen, indem Sie Abfragemuster, Filter oder Schemadesign überarbeiten. Weitere Informationen finden Sie unter Abfragestatistiken abrufen.

Konfigurations- oder Anwendungsprofiländerungen prüfen

Wenn die Knotenanzahl und der Durchsatz unverändert bleiben, aber die durchschnittliche CPU-Auslastung steigt, kann dies auf Änderungen bei den Replikations- oder automatischen Speicherbereinigungsstrategien zurückzuführen sein. Weitere Informationen finden Sie unter Replikation und Leistung. Machen Sie alle Konfigurationsänderungen für die Replikation oder die automatische Speicherbereinigung rückgängig.

An den Bigtable-Support eskalieren

Wenn das Problem durch die vorherigen Schritte nicht behoben wird, wenden Sie sich an den Bigtable-Support.

Nächste Schritte