Tablets quentes

Para ajudar a resolver problemas de desempenho, o Bigtable oferece a capacidade de identificar e observar tablets ativos num cluster. Esta página descreve os tablets populares, indica como obter uma lista de tablets populares e aborda situações em que a identificação de tablets populares é útil. Antes de ler esta página, deve ler a vista geral do Bigtable.

O nome do método que usa para obter uma lista de tablets populares varia consoante o idioma usado. Para simplificar, neste documento, o método é referido pelo nome da API Cloud Bigtable Admin RPC, ListHotTablets. Pode obter uma lista de tablets populares através do seguinte:

A identificação de tablets quentes pode ajudar nas seguintes tarefas:

Compreenda os tablets populares

Uma tabela do Bigtable é dividida em blocos de linhas contíguas, denominados tablets, para ajudar a equilibrar a carga de trabalho das consultas. Cada tablet está associado a um nó e as operações nestas linhas são realizadas no nó. Para otimizar o desempenho, as tabelas são divididas ou movidas para um nó diferente, dependendo dos padrões de acesso. Com base nos padrões de acesso dos utilizadores (operações de leitura, escrita e análise), os tablets são reequilibrados nos nós. Para ver detalhes sobre o equilíbrio de carga, consulte o artigo Como o Bigtable otimiza os seus dados ao longo do tempo.

Um tablet quente é um tablet que apresenta uma utilização excessiva da CPU do nó porque usa uma percentagem desproporcionadamente grande da CPU em comparação com outros tablets. Esta utilização desequilibrada de nós pode causar latência e atrasos na replicação.

Entre as causas mais frequentes de tabelas dinâmicas, encontram-se os pontos críticos, que ocorrem quando a sua aplicação acede frequentemente a linhas próximas umas das outras na tabela. Os pontos críticos são frequentemente o resultado de um design de esquema que não está otimizado para distribuir os padrões de acesso da sua aplicação pela tabela. Para saber como criar as chaves das linhas de forma a evitar pontos ativos, consulte as práticas recomendadas de criação de esquemas.

Para receber uma lista de tablets populares, tem de ter uma função com a autorização bigtable.viewer.

Resultado

O método ListHotTablets devolve os seguintes dados para um determinado cluster numa instância.

  • Nome do tablet. O ID exclusivo atribuído pelo Bigtable à tabela ativa. Este campo não é apresentado pela CLI gcloud.
  • Tabela. O ID da tabela associada ao tablet quente.
  • Utilização da CPU. A utilização média da CPU do nó associado ao tablet quente, expressa em percentagem, durante esse intervalo de um minuto. Esta percentagem é a média da soma da CPU de escrita e da CPU de leitura desde a hora de início até à hora de fim.
  • Hora de início. A hora de início do período de aquecimento do tablet.
  • Hora de fim. A hora de fim do período de tablet quente.
  • Chave de arranque. A primeira chave de linha na tabela dinâmica.
  • Tecla de fim. A chave da última linha na tabela dinâmica. É anexado um sufixo de \000 quando as chaves de início e fim são iguais, o que indica que a tabela abrange uma única linha.

As chaves são ordenadas lexicograficamente numa tabela, pelo que qualquer chave entre a chave de início e a chave de fim está contida nessa tabela ativa.

Os pontos críticos são calculados com uma resolução de um minuto e um tablet pode reaparecer no resultado. Por outras palavras, um único tablet pode ser considerado quente durante vários minutos.

Por predefinição, o ListHotTablets pesquisa as últimas 24 horas. Para pesquisar num intervalo de tempo específico, indique uma hora de início e uma hora de fim.

O número máximo de tablets populares devolvidos é 50. Para alterar esta opção, indique um tamanho da página.

O método devolve uma lista vazia se nenhum dos tablets no cluster estiver quente.

Exemplo de utilização da CLI gcloud

Antes de copiar este exemplo, instale a CLI gcloud.

Para ver uma lista de tablets com problemas para um determinado cluster, execute o comando hot-tablets list na Cloud Shell ou na janela de terminal local.

  gcloud bigtable hot-tablets list CLUSTER_ID --instance INSTANCE_ID

Substitua o seguinte:

  • CLUSTER_ID: o identificador permanente do cluster
  • INSTANCE_ID: o identificador permanente da instância

Se algum tablet no cluster estiver quente, o terminal apresenta uma saída semelhante à seguinte. Os tablets quentes num cluster são apresentados por ordem decrescente de utilização da 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

Exemplos de utilização de dados de tablets populares

A identificação de tablets quentes num cluster pode ajudar a resolver problemas de desempenho. Pode usar o método ListHotTablets em combinação com outras ferramentas de monitorização, como a ferramenta de diagnóstico Key Visualizer para o Bigtable.

Identificar chaves de linhas problemáticas

Pode usar ListHotTablets para identificar chaves de linhas e intervalos de linhas específicos. Isto pode fornecer observabilidade nos padrões de acesso que podem estar a causar pontos críticos.

Por exemplo, suponhamos que o esquema de chaves de linhas de uma tabela é [user_id]#[event_timestamp], IDs de utilizadores e datas/horas separados por um símbolo de hash. A obtenção de uma lista de tablets com problemas de aquecimento pode ajudar a determinar se IDs de utilizadores ou datas/horas de eventos específicos estão a causar pontos críticos. A identificação dos padrões de acesso permite-lhe tomar medidas adicionais, como redesenhar as chaves das linhas ou as tabelas para distribuir a utilização de forma mais uniforme no espaço de chaves. Neste exemplo, se os IDs dos utilizadores estiverem a aumentar monotonicamente e a causar pontos críticos por esse motivo, pode atribuir IDs dos utilizadores por outra ordem ou usar identificadores exclusivos universais (UUID) em alternativa.

Quando a chave da linha de início e a chave da linha de fim são iguais e a chave da linha de fim tem o sufixo \000, é criada uma tabela de uma única linha. Quando este tablet recebe uma quantidade desproporcionadamente grande de tráfego, leva a pontos críticos.

Observar pontos críticos com detalhe ao nível do minuto

Pode usar uma lista de tablets populares em combinação com os mapas de calor do Key Visualizer. Embora o Key Visualizer seja uma boa ferramenta para observar o panorama geral dos padrões de acesso ao espaço de chaves, o ListHotTablets oferece uma maior granularidade.

Depois de inspecionar os mapas de calor no Key Visualizer, pode explorar ainda mais pontos críticos específicos. Uma vez que o Key Visualizer é executado durante um período de semanas, os respetivos dados de pontos críticos são agregados em intervalos de 15 minutos. Além disso, é possível combinar vários tablets no mesmo espaço de chaves do Key Visualizer.

Depois de usar o Key Visualizer para identificar o intervalo de tempo em que os hotspots ocorreram, pode executar o ListHotTablets para uma maior granularidade no espaço de tempo e de chaves. Uma maior granularidade é particularmente útil para a utilização periódica. ListHotTablets pode identificar pontos críticos de curta duração que o KeyVisualizer não consegue.

Identificar tabelas problemáticas num cluster

Uma vez que o Key Visualizer opera ao nível da tabela, nem sempre é a melhor opção para resolver um problema num cluster que tenha várias tabelas. ListHotTablets funciona ao nível do cluster, pelo que pode usá-lo para identificar tabelas com uma utilização elevada da CPU e restringir o problema.

O que se segue?