Risolvere i problemi di latenza

Come qualsiasi sistema di database, Bigtable può riscontrare problemi di latenza. Questo documento illustra le cause comuni dei problemi di latenza in Bigtable e spiega come risolverli.

Diagnostica e risolvi i problemi di latenza di Bigtable utilizzando i passaggi per la risoluzione dei problemi nelle sezioni seguenti:

Comprendere le cause della latenza elevata

I seguenti fattori contribuiscono ai problemi di latenza in Bigtable:

  • Latenza del server. La misurazione della latenza del server inizia quando Bigtable riceve la richiesta e termina quando Bigtable invia l'ultimo byte di dati al client. Per le richieste di grandi quantità di dati, la capacità del client di consumare la risposta può influire sulla latenza del server.
  • Le latenze delle operazioni misurano il tempo end-to-end totale per un'operazione Bigtable, inclusi tutti i tentativi. Questa metrica tiene traccia del round trip dal client a Bigtable e di nuovo al client. La latenza dell'applicazione, la connessione di rete, la latenza della libreria client Bigtable e le latenze del server influiscono sulla latenza dell'operazione.
  • I pattern di carico di lavoro e di richiesta possono aumentare la latenza non solo a causa di un problema di infrastruttura, ma anche a causa di una modifica del pattern di lavoro richiesto dall'applicazione. Ad esempio, una query di scansione generata dinamicamente che in precedenza scansionava cento righe ora ne scansiona un milione a causa di una recente importazione di dati o di una modifica della logica dell'applicazione. Anche se il sistema potrebbe funzionare in modo efficiente, l'aumento significativo della quantità di lavoro per una singola operazione comporta un tempo di esecuzione più lungo, che Bigtable percepisce come una latenza maggiore.

Prima di iniziare

Per risolvere i problemi di latenza elevata, esegui le seguenti attività:

  • Attiva le metriche lato client per la tua libreria client per ottimizzare il rendimento e risolvere i problemi.
  • Per ridurre al minimo la latenza di rete, verifica che la tua applicazione si trovi nella stessa zona del cluster Bigtable. In questo modo si riduce la distanza di rete tra l'applicazione e il cluster, migliorando i tempi di risposta alle richieste.
  • Raccogli le seguenti informazioni sul tuo ambiente Bigtable:
  • Raccogli le seguenti informazioni sul tuo ambiente lato client:
  • Raccogli le seguenti informazioni sul problema:

Risolvere i problemi di latenza

Se riscontri problemi di latenza in Bigtable, segui questi passaggi per risolvere il problema:

  1. Controlla la latenza del server: utilizza la pagina Monitoring nella console Google Cloud per visualizzare la latenza del server. Per ulteriori informazioni, consulta Monitora con Cloud Monitoring. Controlla la latenza dell'istanza. Se l'istanza contiene più cluster, suddividi la metrica per cluster. Se noti un aumento della latenza nei grafici della latenza di lettura o scrittura oppure nelle metriche lato client, segui i passaggi per la risoluzione dei problemi relativi alla latenza del server nella sezione Risolvere i problemi relativi alla latenza del server di questo documento.
  2. Controlla la latenza del client: dopo aver attivato le metriche lato client, cerca bigtable.googleapis.com/client in Metrics Explorer di Cloud Monitoring. Esamina le metriche lato client disponibili. Se noti un aumento della latenza nelle metriche lato client, ma non sul server, esamina la tua applicazione e la connessione di rete. Per saperne di più, consulta la sezione Risolvere i problemi di latenza del client di questo documento.

Il seguente diagramma mostra la procedura per la risoluzione dei problemi di aumento della latenza in Bigtable:

Diagramma di flusso per la risoluzione dei problemi di latenza di Bigtable.
Figura 1. Il processo di risoluzione dei problemi di latenza di Bigtable (fai clic per ingrandire).

Risolvere i problemi di latenza del client

Segui questi passaggi per risolvere i problemi di latenza lato client.

Prima di iniziare

Prima di iniziare la risoluzione dei problemi di latenza lato client, completa le seguenti attività:

  • Abilita le metriche lato client in Bigtable.
  • Attiva il priming del canale se utilizzi una versione del client Java 2.17.1 o precedente. L'aggiornamento dei canali è abilitato per impostazione predefinita a partire dalla versione 2.18.0.
  • Esegui iterazioni per determinare la dimensione ottimale del pool di connessioni per il tuo workload. Canali inadeguati o eccessivi possono causare latenze elevate dei tentativi.

Controllare le latenze di blocco delle applicazioni

Controlla la metrica Application Blocking Latencies nella console Google Cloud ed esegui una delle seguenti azioni:

  • Se le latenze di blocco delle applicazioni sono elevate e corrispondono all'aumento della latenza segnalato, concentrati sulla risoluzione dei problemi lato client.
  • Se le latenze di blocco delle applicazioni sono elevate e il client è ospitato su infrastrutturaGoogle Cloud , come GKE o Compute Engine, riassegna la richiesta al team di assistenza Google Cloud appropriato.
  • Se le latenze di blocco delle applicazioni sono basse e anche la latenza di servizio di Bigtable è bassa, il collo di bottiglia della latenza si trova probabilmente in un componente intermedio del percorso di rete o del traffico, ad esempio la rete o il frontend di Google. Valuta la possibilità di riassegnare il problema al Google Cloud team di networking per ricevere assistenza con l'acquisizione completa dei pacchetti per identificare il collo di bottiglia della latenza.

Risolvere i problemi di latenza elevata delle operazioni

  1. Se connectivity_error_count è elevato, l'applicazione ha difficoltà a raggiungere il frontend di Google. Imposta timeout RPC inferiori in modo che la richiesta possa essere ritentata su canali diversi.
    • Se il timeout RPC è troppo basso, può anche comportare latenze elevate delle operazioni. Determina il timeout RPC P99 tipico durante le normali operazioni. L'impostazione di un valore di timeout RPC più vicino a questo benchmark aiuta a ottimizzare il rendimento.
  2. Se retry_count è elevato, controlla il tag di stato attempt_latencies. Se i tentativi non vanno a buon fine con errori DEADLINE_EXCEEDED, il termine della richiesta è troppo breve rispetto alla media attempt_latencies.

Richieste di indirizzi in coda sul thread gRPC

Se nessuna delle metriche supera la norma, le richieste potrebbero essere accodate nel thread gRPC. Ciò può verificarsi per i seguenti motivi:

  • Le dimensioni del pool di canali sono troppo piccole e le richieste vengono accodate nei canali gRPC. Per ulteriori informazioni, consulta la sezione Richieste memorizzate nel buffer.
  • L'utilizzo della CPU della VM client è elevato. Un utilizzo elevato della CPU comporta anche l'accodamento delle richieste nel client.

Risolvere i problemi di latenza del server

Segui questi passaggi per risolvere i problemi di latenza lato server.

Determinare se il cluster è sovraccarico

  1. Controlla i grafici Read requests e Write requests per verificare le variazioni delle QPS.
  2. Controlla il grafico Node count per verificare le modifiche al conteggio dei nodi.
  3. Controlla i grafici Read throughput e Write throughput per verificare eventuali aumenti della larghezza di banda. Per saperne di più, vedi Informazioni sul rendimento.
  4. Per identificare come viene utilizzata la CPU per profilo di app, metodo e tabella per risolvere i problemi di prestazioni, consulta il post del blog Dove viene utilizzata la CPU del cluster Cloud Bigtable?.
  5. Aumenta il numero di nodi nel cluster interessato. Per saperne di più, consulta Aggiungere o rimuovere nodi manualmente e Scalabilità automatica. Verifica che l'utilizzo medio della CPU rimanga al di sotto della soglia consigliata.

Controllare la presenza di hotspot

Un tablet caldo utilizza una percentuale sproporzionatamente elevata della CPU di un nodo rispetto ad altri tablet associati a quel nodo. Questo utilizzo sbilanciato può verificarsi a causa di un volume elevato imprevisto di richieste a un intervallo di righe o di difetti nella progettazione dello schema. Questo utilizzo sbilanciato dei nodi può causare latenze più elevate e ritardi nella replica, noti come hotspot.

  1. Osserva gli hotspot nel grafico CPU utilization (hottest node) high granularity.
  2. Per identificare i tablet attivi, utilizza hot tablets o lo strumento Key Visualizer.
  3. A differenza dell'utilizzo eccessivo della CPU a livello di cluster, che spesso puoi mitigare aggiungendo altri nodi (scalabilità orizzontale), gli hotspot potrebbero richiedere altre tecniche di mitigazione. Queste tecniche includono la modifica del modo in cui vengono create le chiavi di riga o dello schema. Per saperne di più, consulta il post del blog Eliminare gli hotspot in Cloud Bigtable.

Risolvere la latenza con QPS basso

Bigtable offre le prestazioni migliori con tabelle di grandi dimensioni a cui accedi di frequente. Se invii richieste dopo un periodo di inattività, potresti notare una latenza elevata mentre Bigtable ristabilisce le connessioni.

  1. Se i grafici Read requests e Write requests mostrano un valore QPS basso, prevedi tempi di risposta più lenti.
  2. Mitiga i problemi di avvio a freddo seguendo le best practice descritte in Avvii a freddo e QPS basso.

Valutare l'efficienza delle richieste

Valuta l'efficienza delle richieste utilizzando le statistiche delle query. Le statistiche sulle query mostrano il rapporto tra righe visualizzate e righe restituite e tra celle visualizzate e celle restituite, il che indica l'efficienza delle query. Migliora l'efficienza delle richieste rivedendo i pattern di query o la progettazione dello schema. Per maggiori informazioni, consulta Visualizzare le statistiche delle query.

Controllare la configurazione o le modifiche al profilo dell'app

Se il conteggio dei nodi e il throughput rimangono invariati, ma l'utilizzo medio della CPU aumenta, ciò potrebbe essere dovuto a modifiche alle strategie di replica o garbage collection. Per saperne di più, consulta Replica e prestazioni. Ripristina qualsiasi modifica alla configurazione per la replica o la garbage collection.

Riassegnare la richiesta all'assistenza Bigtable

Se i passaggi precedenti non risolvono il problema, riassegna la richiesta all'assistenza Bigtable.

Passaggi successivi