Latenzprobleme beheben

Wie bei jedem Datenbanksystem können auch bei Bigtable Latenzprobleme auftreten. In diesem Dokument werden häufige Ursachen für Latenzprobleme in Bigtable und die entsprechenden Schritte zur Fehlerbehebung beschrieben.

Mit den Schritten zur Fehlerbehebung in den folgenden Abschnitten können Sie Bigtable-Latenzprobleme diagnostizieren und beheben:

Ursachen für hohe Latenz verstehen

Die folgenden Faktoren können zu Latenzproblemen in Bigtable führen:

  • 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 sich die Fähigkeit des Clients, die Antwort zu verarbeiten, auf die Serverlatenz auswirken.
  • 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 Latenz von Vorgängen aus.
  • Arbeitslast- und Anfragemuster können die Latenz nicht nur aufgrund eines Infrastrukturproblems, sondern auch aufgrund einer Änderung des Arbeitsmusters erhöhen, das von der Anwendung angefordert wird. Beispiel: Eine dynamisch generierte Scananfrage, mit der zuvor 100 Zeilen gescannt wurden, scannt jetzt aufgrund eines kürzlich erfolgten Datenimports oder einer Änderung der Anwendungslogik eine Million Zeilen. Das System arbeitet zwar möglicherweise effizient, aber die erhebliche Zunahme der Arbeit für einen einzelnen Vorgang führt zu einer längeren Ausführungszeit, die Bigtable als höhere Latenz wahrnimmt.

Hinweise

So beheben Sie Probleme mit hoher Latenz:

  • Aktivieren Sie clientseitige Messwerte für Ihre Clientbibliothek, um die Leistung zu optimieren und Probleme zu beheben.
  • Um die Netzwerklatenz zu minimieren, muss sich Ihre Anwendung in derselben Zone wie Ihr Bigtable-Cluster befinden. Dadurch wird die Netzwerkdistanz zwischen Ihrer Anwendung und Ihrem Cluster verringert, was die Reaktionszeiten 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, segmentieren Sie den Messwert nach Cluster. Wenn Sie in den Diagrammen zur Lese- oder Schreiblatenz oder in clientseitigen Messwerten einen Anstieg der Latenz feststellen, folgen Sie der Anleitung zur Fehlerbehebung bei Serverlatenz im Abschnitt Serverlatenz beheben in diesem Dokument.
  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 eine erhöhte Latenz bei clientseitigen Messwerten, aber nicht auf dem Server feststellen, sollten Sie Ihre Anwendung und Netzwerkverbindung überprüfen. 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 Bigtable-Latenz.
Abbildung 1. Der Prozess der Fehlerbehebung bei Bigtable-Latenzproblemen (zum Vergrößern klicken)

Client-Latenz beheben

So beheben Sie Probleme mit der clientseitigen Latenz:

Hinweise

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

  • Clientseitige Messwerte in Bigtable aktivieren.
  • Aktivieren Sie das Channel-Priming, 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 Channels können zu hohen Latenzzeiten bei Versuchen führen.

Latenzen durch Anwendungsblockierung prüfen

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

  • Wenn die Latenzen, die das Blockieren von Anwendungen verursachen, hoch sind und dem gemeldeten Latenzanstieg entsprechen, konzentrieren Sie sich auf die Fehlerbehebung von clientseitigen Problemen.
  • Wenn die Latenzen, die die Anwendung blockieren, hoch sind und der Client auf derGoogle Cloud -Infrastruktur wie GKE oder Compute Engine gehostet wird, eskalieren Sie den Fall an das entsprechende Google Cloud -Supportteam.
  • Wenn die Latenzzeiten für das Blockieren von Anwendungen niedrig sind und auch die Bigtable-Bereitstellungslatenz 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 Cloud-Netzwerkteam zu eskalieren, damit es Sie bei der vollständigen Paketerfassung unterstützt, um 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 Latenzen bei Vorgängen 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, sehen Sie sich das Status-Tag attempt_latencies an. Wenn Versuche mit DEADLINE_EXCEEDED-Fehlern fehlschlagen, ist die Frist für die Anfrage im Vergleich zum durchschnittlichen attempt_latencies zu kurz.

Anfragen bearbeiten, die in der Warteschlange des gRPC-Threads stehen

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

  • Die Channelpoolgröße ist zu klein und Anfragen werden in den gRPC-Channels 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.

Serverlatenz beheben

Gehen Sie so vor, um Probleme mit serverseitiger Latenz zu beheben.

Ermitteln, ob der Cluster überlastet ist

  1. Sehen Sie sich die Diagramme Read requests und Write requests an, um Änderungen bei den Anfragen pro Sekunde zu erkennen.
  2. Sehen Sie sich das Node count-Diagramm an, um Änderungen bei der Anzahl der Knoten zu erkennen.
  3. Sehen Sie sich die Diagramme für Read throughput und Write throughput an, um festzustellen, ob die Bandbreite zugenommen hat. Weitere Informationen finden Sie unter Leistung verstehen.
  4. Informationen dazu, wie Sie die CPU-Auslastung nach Anwendungsprofil, Methode und Tabelle ermitteln, um Leistungsprobleme zu beheben, finden Sie im Blogpost Where is your Cloud Bigtable cluster spending its CPU?.
  5. Erhöhen Sie die Anzahl der Knoten 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 einen unverhältnismäßig hohen Prozentsatz der CPU eines Knotens im Vergleich zu anderen Tabellenreihen, die diesem Knoten zugeordnet sind. Diese unausgeglichene Nutzung kann durch eine unerwartet hohe Anzahl von Anfragen an einen Zeilenbereich oder durch Fehler im Schemadesign verursacht werden. Diese unausgeglichene Knotennutzung kann zu höheren Latenzen und Replikationsverzögerungen führen, die als Hotspots bezeichnet werden.

  1. Beobachten Sie Hotspots im CPU utilization (hottest node) high granularity-Diagramm.
  2. Verwenden Sie Hot-Tabellenreihen oder das Key Visualizer-Tool, um Hot-Tabellenreihen zu identifizieren.
  3. Im Gegensatz zur CPU-Überlastung auf Clusterebene, die Sie oft durch Hinzufügen weiterer Knoten (horizontale Skalierung) beheben können, erfordern Hotspots möglicherweise andere Maßnahmen. Dazu gehören das Ändern der Art und Weise, wie Sie Zeilenschlüssel erstellen, oder das Ändern des Schemas. Weitere Informationen finden Sie im Blogbeitrag Hotspots in Cloud Bigtable vermeiden.

Latenz bei niedrigen QPS beheben

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

  1. Wenn in den Diagrammen Read requests und Write requests niedrige Werte für Abfragen pro Sekunde angezeigt werden, sind langsamere Reaktionszeiten zu erwarten.
  2. Kaltstartprobleme lassen sich durch die Best Practices in Kaltstarts und niedriger QPS-Wert vermeiden.

Effizienz von Anfragen bewerten

Anfrageeffizienz anhand von Abfragestatistiken bewerten Die Abfragestatistiken zeigen das Verhältnis der gesehenen Zeilen zu den zurückgegebenen Zeilen und der gesehenen Zellen zu den zurückgegebenen Zellen an. Dies gibt Aufschluss über die Effizienz der Abfrage. Die Effizienz von Anfragen lässt sich verbessern, indem Sie Abfragemuster oder das Schemadesign überarbeiten. Weitere Informationen finden Sie unter Abfragestatistiken abrufen.

Konfigurations- oder Anwendungsprofiländerungen prüfen

Wenn die Anzahl der Knoten und der Durchsatz unverändert bleiben, die durchschnittliche CPU-Auslastung jedoch steigt, kann dies an Änderungen bei den Replikations- oder Garbage Collection-Strategien liegen. Weitere Informationen finden Sie unter Replikation und Leistung. Machen Sie alle Konfigurationsänderungen für die Replikation oder automatische Speicherbereinigung rückgängig.

An den Bigtable-Support eskalieren

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

Nächste Schritte