Compresse calde

Per aiutarti a risolvere i problemi di prestazioni, Bigtable consente di identificare e osservare i tablet attivi in un cluster. In questa pagina vengono descritti i tablet caldi, viene spiegato come ottenere un elenco di questi tablet e vengono discusse le situazioni in cui è utile identificare questi tablet. Prima di leggere questa pagina, ti consigliamo di leggere la panoramica di Bigtable.

Il nome del metodo che utilizzi per ricevere un elenco di tablet caldi varia a seconda della lingua utilizzata. Per semplicità, in questo documento il metodo fa riferimento al nome dell'API Cloud Bigtable Admin di RPC, ListHotTablets. Puoi visualizzare un elenco di tablet caldi utilizzando quanto segue:

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

Informazioni sui tablet caldi

Una tabella Bigtable è suddivisa in blocchi di righe contigue, denominati tablet, per bilanciare il 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 su un nodo diverso a seconda dei pattern di accesso. In base ai pattern di accesso degli utenti (operazioni di lettura, scrittura e scansione), i tablet vengono bilanciati tra i nodi. Per maggiori dettagli sul bilanciamento del carico, vedi In che modo Bigtable ottimizza i dati nel tempo.

Un tablet ad accesso frequente è un tablet che presenta un uso eccessivo della CPU del nodo perché utilizza una percentuale di CPU sproporzionata rispetto ad altri tablet. L'utilizzo non bilanciato dei nodi può causare latenza e ritardi di replica.

Tra le cause più frequenti dei tablet caldi ci sono gli hotspot, che si verificano quando la tua applicazione accede spesso a righe vicine tra loro nella tabella. Gli hotspot sono spesso il risultato di una progettazione dello schema non ottimizzata per distribuire i pattern di accesso dell'applicazione nella tabella. Per informazioni su come progettare le chiavi di riga in modo che non si verifichino hotspot, consulta le best practice per la progettazione degli schemi.

Per ricevere un elenco di tablet caldi, devi essere assegnato a un ruolo che ha 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 attivo. Questo campo non viene visualizzato dallgcloud CLI.
  • Tabella. L'ID della tabella associato al tablet caldo.
  • Utilizzo CPU. L'utilizzo medio della CPU del nodo associato al tablet caldo, espresso in percentuale, durante quell'intervallo di un minuto. Questa percentuale è la media della somma di CPU di scrittura e CPU di lettura dall'ora di inizio all'ora di fine.
  • Ora di inizio. L'ora di inizio del periodo del tablet caldo.
  • Ora di fine. L'ora di fine del periodo con tablet caldo.
  • Tasto Start. La chiave della prima fila nel tablet caldo.
  • Chiave finale. La chiave dell'ultima fila nel tablet attivo. Quando le chiavi di inizio e fine sono uguali, viene aggiunto un suffisso \000, a indicare che il tablet occupa una singola riga.

Le chiavi vengono ordinate lessicograficamente all'interno di un tablet, pertanto qualsiasi chiave tra il tasto iniziale e la chiave finale è contenuta all'interno del tablet.

Gli hotspot vengono calcolati con una risoluzione di un minuto e un tablet potrebbe riapparire nell'output. In altre parole, un solo tablet può essere considerato caldo per più minuti.

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

Il numero massimo di tablet caldi restituiti è 50. Per modificare questa impostazione, fornisci una dimensione pagina.

Il metodo restituisce un elenco vuoto se nessuno dei tablet nel cluster è caldo.

Esempio di utilizzo di gcloud CLI

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

Per visualizzare un elenco di hot tablet 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 per l'istanza

Se nel cluster sono presenti tablet caldi, il terminale visualizza un output simile al seguente. I tablet attivi in un cluster sono elencati 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 dei dati provenienti da tablet a caldo

Identificare i tablet caldi in un cluster può aiutarti a risolvere i problemi di prestazioni. Puoi utilizzare il metodo ListHotTablets in combinazione con altri strumenti di monitoraggio, come lo strumento di diagnostica Key Visualizer per Bigtable.

Identificazione di chiavi di riga problematiche

Puoi utilizzare ListHotTablets per identificare chiavi di riga e intervalli di righe specifici. Ciò può fornire osservabilità nei pattern di accesso che potrebbero causare hotspot.

Ad esempio, supponi 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. Visualizzare un elenco di tablet caldi può aiutarti a determinare se gli hotspot sono dovuti a ID utente o timestamp di eventi specifici. L'identificazione dei pattern di accesso ti consente di eseguire altre azioni, ad esempio riprogettare 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 aumentano monotonicamente e causano hotspot per questo motivo, potresti assegnare gli ID utente in un ordine diverso o utilizzare identificatori univoci universali (UUID).

Quando la chiave di riga iniziale e quella finale sono uguali e alla chiave di riga finale viene aggiunto un suffisso \000, viene creato un tablet a riga singola. Quando il tablet riceve una quantità sproporzionata di traffico, porta agli hotspot.

Hotspot di osservazione con granularità a livello di minuto

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

Dopo aver ispezionato le mappe termiche in Key Visualizer, puoi esplorare ulteriormente gli hotspot specifici. Poiché Key Visualizer viene eseguito per un periodo di settimane, i dati relativi agli hotspot vengono aggregati in intervalli di 15 minuti. Inoltre, più tablet potrebbero essere combinati nello stesso spazio 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 chiave che nello spazio temporale. Una maggiore granularità è particolarmente utile per l'utilizzo periodico. ListHotTablets è in grado di identificare hotspot di breve durata che Key Visualizer non è in grado di identificare.

Identificare le tabelle problematiche all'interno di un cluster

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

Passaggi successivi