Tablet caldi

Per aiutarti a risolvere i problemi di prestazioni, Bigtable offre la possibilità di identificare e osservare i tablet caldi in un cluster. Questa pagina descrive i tablet caldi, spiega come ottenere un elenco di tablet caldi e illustra le situazioni in cui è utile identificarli. Prima di leggere questa pagina, devi leggere la panoramica di Bigtable.

Il nome del metodo utilizzato per ottenere un elenco di tablet caldi varia a seconda della lingua utilizzata. Per semplicità, in questo documento il metodo viene indicato con il nome dell'API RPC Cloud Bigtable Admin, ListHotTablets. Puoi ottenere un elenco di schede calde utilizzando quanto segue:

L'identificazione dei tablet con problemi può aiutarti a svolgere le seguenti attività:

Informazioni sui tablet caldi

Una tabella Bigtable viene partizionata orizzontalmente in blocchi di righe contigue, chiamati tablet, per consentire il bilanciamento del carico di lavoro delle query. Ogni tablet è associato a un nodo e le operazioni su queste righe vengono eseguite sul nodo. Per ottimizzare le prestazioni, i tablet vengono suddivisi o spostati in un altro nodo a seconda dei pattern di accesso. In base ai modelli di accesso degli utenti, ovvero operazioni di lettura, scrittura e scansione, i tablet vengono riequilibrati tra i nodi. Per informazioni dettagliate sul bilanciamento del carico, consulta In che modo Bigtable ottimizza i dati nel tempo.

Un tablet attivo è un tablet che presenta un sovrautilizzo della CPU del nodo perché utilizza una percentuale di CPU sproporzionatamente elevata rispetto agli altri tablet. Questo utilizzo non bilanciato dei nodi può causare latenza e ritardi nella replica.

Tra le cause più frequenti delle tabelle calde ci sono gli hotspot, che si verificano quando la tua applicazione accede di frequente a righe vicine nella tabella. Gli hotspot sono spesso il risultato di un design dello schema non ottimizzato per distribuire i pattern di accesso della tua applicazione nella tabella. Per scoprire come progettare le chiavi di riga in modo da evitare gli hotspot, consulta le best practice per la progettazione dello schema.

Per ottenere un elenco di tablet caldi, devi disporre di un ruolo con l'autorizzazione bigtable.viewer.

Output

Il metodo ListHotTablets restituisce i seguenti dati per un determinato cluster in un'istanza.

  • Nome del tablet. L'ID univoco assegnato da Bigtable al tablet caldo. Questo campo non viene visualizzato dalla gcloud CLI.
  • Table. L'ID della tabella associata alla scheda attiva.
  • Utilizzo della CPU. L'utilizzo medio della CPU del nodo associato al tablet caldo, espresso in percentuale, durante l'intervallo di un minuto. Questa percentuale è la media della somma della CPU in scrittura e della CPU in lettura dall'ora di inizio a quella di fine.
  • Ora di inizio. L'ora di inizio del periodo del tablet caldo.
  • Ora di fine. L'ora di fine del periodo del tablet attivo.
  • Chiave iniziale. La prima chiave di riga nel tablet caldo.
  • Chiave finale. L'ultima chiave di riga nel tablet caldo. Viene aggiunto un suffisso \000 quando la chiave di inizio e di fine sono uguali, a indicare che il tablet occupa una singola riga.

Le chiavi sono ordinate in ordine alfabetico all'interno di un tablet, pertanto qualsiasi chiave tra la chiave di inizio e la chiave di fine è contenuta nel tablet attivo.

Gli hotspot vengono calcolati con una risoluzione di un minuto e un tablet potrebbe riapparire nell'output. In altre parole, un singolo tablet potrebbe essere considerato caldo per diversi minuti.

Per impostazione predefinita, ListHotTablets esegue ricerche nelle ultime 24 ore. Per eseguire ricerche in un intervallo di tempo specifico, specifica un'ora di inizio e un'ora di fine.

Il numero massimo di tablet caldi restituiti è 50. Per modificare questa impostazione, specifica un formato di pagina.

Il metodo restituisce un elenco vuoto se nessuno dei tablet del cluster è attivo.

Esempio di utilizzo dell'interfaccia a riga di comando gcloud

Prima di copiare questo esempio, installa l'interfaccia a riga di comando gcloud.

Per visualizzare un elenco di tablet caldi per un determinato cluster, esegui il comando hot-tablets list in Cloud Shell o nella finestra del terminale locale.

  gcloud bigtable hot-tablets list CLUSTER_ID --instance INSTANCE_ID

Sostituisci quanto segue:

  • CLUSTER_ID: l'identificatore permanente del cluster
  • INSTANCE_ID: l'identificatore permanente dell'istanza

Se i tablet del cluster sono caldi, il terminale mostra un output simile al seguente. Le schede con elevato utilizzo in un cluster sono elencate in ordine decrescente di utilizzo della CPU.

TABLE      CPU_USAGE  START_TIME                 END_TIME                   START_KEY            END_KEY
test-data  89.3       2021-12-14T01:19:57+00:00  2021-12-14T01:20:57+00:00  user29333893046…    user29333893046…
test-data  22.8       2021-12-14T01:04:59+00:00  2021-12-14T01:06:59+00:00  user29333893046…    user29345657428…
test-data  20.9       2021-12-14T01:18:56+00:00  2021-12-14T01:20:56+00:00  user54519105346…    user545293
test-data  16.5       2021-12-14T01:18:56+00:00  2021-12-14T01:20:56+00:00  user49196524328…    user49206

Casi d'uso per i dati dei tablet caldi

L'identificazione delle schede attive in un cluster può aiutarti a risolvere i problemi di rendimento. Puoi utilizzare il metodo ListHotTablets in combinazione con altri strumenti di monitoraggio, ad esempio lo strumento di diagnostica Key Visualizer per Bigtable.

Identificazione delle chiavi di riga problematiche

Puoi utilizzare ListHotTablets per identificare chiavi di riga e intervalli di riga specifici. In questo modo, è possibile monitorare i pattern di accesso che potrebbero causare hotspot.

Ad esempio, supponiamo che lo schema della chiave di riga di una tabella sia [user_id]#[event_timestamp], ID utente e timestamp separati da un simbolo di hash. L'elenco dei tablet più utilizzati può aiutarti a determinare se ID utente o timestamp degli eventi specifici stanno causando hotspot. L'identificazione dei pattern di accesso consente di intraprendere ulteriori azioni, ad esempio ridisegnare le chiavi di riga o le tabelle per distribuire l'utilizzo in modo più uniforme nello spazio delle chiavi. In questo esempio, se gli ID utente sono in aumento in modo monotono e causano hotspot per questo motivo, puoi assegnare gli ID utente in un ordine diverso o utilizzare gli identificatori universalmente univoci (UUID).

Quando le chiavi di riga iniziale e finale sono uguali e la chiave di riga finale viene aggiunta con un suffisso \000, viene creato un tablet con una sola riga. Quando il tablet riceve una quantità di traffico sproporzionatamente elevata, si verificano hotspot.

Osservare gli hotspot con una granularità al minuto

Puoi utilizzare un elenco di tablet di tendenza in combinazione con le mappe termiche di Key Visualizer. Sebbene Key Visualizer sia un buon strumento per osservare il quadro più ampio dei pattern di accesso allo spazio delle chiavi, ListHotTablets offre una maggiore granularità.

Dopo aver esaminato le mappe di calore in Key Visualizer, puoi esplorare ulteriormente hotspot specifici. Poiché Key Visualizer viene eseguito per un periodo di settimane, i relativi dati per gli hotspot vengono aggregati in intervalli di 15 minuti. Inoltre, più tablet potrebbero essere combinati nello stesso spazio delle chiavi di Key Visualizer.

Dopo aver utilizzato Key Visualizer per identificare l'intervallo di tempo in cui si sono verificati gli hotspot, puoi eseguire ListHotTablets per una maggiore granularità sia nello spazio delle chiavi sia in quello del tempo. Una maggiore granularità è particolarmente utile per l'utilizzo periodico. ListHotTablets può identificare hotspot di breve durata che KeyVisualizer non è in grado di rilevare.

Identificazione delle tabelle problematiche all'interno di un cluster

Poiché Key Visualizer opera a livello di tabella, non è sempre la scelta migliore per la risoluzione dei problemi in un cluster con più tabelle. ListHotTablets opera a livello di cluster, quindi puoi utilizzarlo per identificare le tabelle con un utilizzo elevato della CPU e circoscrivere il problema.

Passaggi successivi