Resolver problemas de latência

Como qualquer sistema de banco de dados, o Bigtable pode ter problemas de latência. Este documento discute causas comuns de problemas de latência no Bigtable e explica como resolvê-los.

Diagnostique e resolva problemas de latência do Bigtable usando as etapas de solução de problemas nas seções a seguir:

Entender as causas de alta latência

Os seguintes fatores contribuem para problemas de latência no Bigtable:

  • Latência do servidor. A medição da latência do servidor começa quando o Bigtable recebe a solicitação e termina quando o Bigtable envia o último byte de dados ao cliente. No caso de solicitações de grandes volumes de dados, a capacidade do cliente de consumir a resposta pode afetar a latência do servidor.
  • As latências de operação medem o tempo total de ponta a ponta de uma operação do Bigtable, incluindo todas as novas tentativas. Essa métrica rastreia o tempo de ida e volta do cliente ao Bigtable e de volta ao cliente. A latência do aplicativo, a conexão de rede, a latência da biblioteca de cliente do Bigtable e as latências do servidor afetam a latência da operação.
  • Padrões de carga de trabalho e de solicitação podem aumentar a latência não apenas por um problema de infraestrutura, mas também por uma mudança no padrão de trabalho que o aplicativo solicita. Por exemplo, uma consulta de verificação gerada dinamicamente que antes verificava cem linhas agora verifica um milhão de linhas devido a uma importação de dados recente ou a uma mudança na lógica do aplicativo. Embora o sistema possa estar operando com eficiência, o aumento significativo na quantidade de trabalho para uma única operação resulta em um tempo de execução mais longo, que o Bigtable percebe como maior latência.

Antes de começar

Para resolver problemas de alta latência, faça o seguinte:

  • Ative as métricas do lado do cliente para sua biblioteca de cliente otimizar a performance e resolver problemas.
  • Para minimizar a latência da rede, verifique se o aplicativo está na mesma zona que o cluster do Bigtable. Isso reduz a distância de rede entre o aplicativo e o cluster, o que melhora os tempos de resposta das solicitações.
  • Reúna as seguintes informações sobre seu ambiente do Bigtable:
  • Reúna as seguintes informações sobre seu ambiente do lado do cliente:
  • Reúna as seguintes informações sobre o problema:

Resolver problemas de latência

Se você tiver problemas de latência no Bigtable, siga estas etapas para resolver o problema:

  1. Verificar a latência do servidor: use a página "Monitoring" no console doGoogle Cloud para conferir a latência do servidor. Para mais informações, consulte Monitorar com o Cloud Monitoring. Verifique a latência da sua instância. Se a instância tiver vários clusters, divida a métrica por cluster. Se você notar aumentos na latência de leitura ou gravação ou nas métricas do lado do cliente, siga as etapas de solução de problemas de latência do servidor na seção Resolver problemas de latência do servidor deste documento.
  2. Verificar a latência do cliente: depois de ativar as métricas do lado do cliente, pesquise bigtable.googleapis.com/client no Metrics Explorer do Cloud Monitoring. Analise as métricas do lado do cliente disponíveis. Se você notar um aumento na latência nas métricas do lado do cliente, mas não no servidor, examine o aplicativo e a conexão de rede. Para mais informações, consulte a seção Resolver problemas de latência do cliente deste documento.

O diagrama a seguir mostra o processo de solução de problemas de aumento da latência no Bigtable:

Fluxograma para solucionar problemas de latência do Bigtable.
Figura 1. O processo de solução de problemas de latência do Bigtable (clique para ampliar).

Resolver problemas de latência do cliente

Siga estas etapas para resolver problemas de latência do lado do cliente.

Antes de começar

Antes de começar a resolver problemas de latência do lado do cliente, conclua as seguintes tarefas:

  • Ative as métricas do lado do cliente no Bigtable.
  • Ative a inicialização de canais se você usar uma versão do cliente Java 2.17.1 ou anterior. A atualização do canal é ativada por padrão a partir da versão 2.18.0.
  • Itere para determinar o tamanho ideal do pool de conexões para sua carga de trabalho. Canais inadequados ou excessivos podem causar latências de tentativas altas.

Verificar latências de bloqueio de aplicativos

Verifique a métrica Application Blocking Latencies no console Google Cloud e realize uma das seguintes ações:

  • Se as latências de bloqueio de aplicativos forem altas e corresponderem ao aumento de latência informado, concentre-se na solução de problemas do lado do cliente.
  • Se as latências de bloqueio de aplicativos forem altas e o cliente estiver hospedado na infraestruturaGoogle Cloud , como GKE ou Compute Engine, encaminhe para a equipe de suporte Google Cloud adequada.
  • Se as latências de bloqueio de aplicativos e de serviço do Bigtable forem baixas, o gargalo de latência provavelmente está em um componente intermediário do caminho de rede ou de tráfego, como a rede ou o front-end do Google. Considere encaminhar o caso para a equipe de rede, que pode ajudar você com uma captura completa de pacotes para identificar o gargalo de latência. Google Cloud

Resolver latências de operação altas

  1. Se connectivity_error_count estiver alto, o aplicativo terá problemas para alcançar o front-end do Google. Defina tempos limite de RPC mais baixos para que a solicitação possa ser repetida em canais diferentes.
    • Se o tempo limite de RPC for muito baixo, isso também poderá causar latências altas de operação. Determine o tempo limite típico de RPC P99 durante operações normais. Definir um valor de tempo limite de RPC mais próximo desse comparativo de mercado ajuda a otimizar o desempenho.
  2. Se retry_count estiver alto, verifique a tag de status attempt_latencies. Se as tentativas falharem com erros DEADLINE_EXCEEDED, o prazo da solicitação será muito curto em comparação com o attempt_latencies médio.

Processar solicitações enfileiradas na linha de execução gRPC

Se nenhuma das métricas exceder a norma, as solicitações poderão ficar em fila na thread gRPC. Isso pode acontecer pelos seguintes motivos:

  • O tamanho do pool de canais é muito pequeno, e as solicitações ficam em fila nos canais gRPC. Para mais informações, consulte Solicitações em buffer.
  • O uso da CPU da VM do cliente é alto. O uso elevado da CPU também leva ao enfileiramento de solicitações no cliente.

Resolver problemas de latência do servidor

Siga estas etapas para resolver problemas de latência do lado do servidor.

Determinar se o cluster está sobrecarregado

  1. Verifique os gráficos Read requests e Write requests para conferir mudanças no QPS.
  2. Verifique o gráfico Node count para conferir mudanças na contagem de nós.
  3. Verifique os gráficos Read throughput e Write throughput para aumentos na largura de banda. Para mais informações, consulte Entender o desempenho.
  4. Para identificar como a CPU é usada por perfil, método e tabela do app para resolver problemas de desempenho, consulte a postagem do blog Onde o cluster do Cloud Bigtable está gastando a CPU?.
  5. Aumente a contagem de nós no cluster afetado. Para mais informações, consulte Adicionar ou remover nós manualmente e Escalonamento automático. Verifique se o uso médio da CPU permanece abaixo do limite recomendado.

Verificar se há pontos de acesso

Um bloco mais usado usa uma porcentagem desproporcionalmente grande da CPU de um nó em comparação com outros tablets associados a esse nó. Esse uso desequilibrado pode ocorrer devido a um alto volume inesperado de solicitações para um intervalo de linhas ou falhas no design do esquema. Esse desequilíbrio de uso de nós pode causar latências mais altas e atrasos de replicação, conhecidos como pontos de acesso.

  1. Observe os pontos de acesso no gráfico CPU utilization (hottest node) high granularity.
  2. Para identificar blocos mais usados, use blocos mais usados ou a ferramenta Key Visualizer.
  3. Ao contrário da superutilização da CPU no nível do cluster, que geralmente pode ser atenuada com a adição de mais nós (escalonamento horizontal), os hotspots podem exigir outras técnicas de mitigação. Essas técnicas incluem mudar a forma de construir chaves de linha ou alterar o esquema. Para mais informações, consulte a postagem do blog Eliminar hotspots no Cloud Bigtable.

Como lidar com a latência com QPS baixo

O Bigtable tem um desempenho melhor com tabelas grandes que você acessa com frequência. Se você enviar solicitações após um período sem uso, poderá observar alta latência enquanto o Bigtable restabelece as conexões.

  1. Se os gráficos Read requests e Write requests mostrarem um QPS baixo, espere tempos de resposta mais lentos.
  2. Para reduzir os problemas de inicialização a frio, siga as práticas recomendadas em Inicializações a frio e QPS baixo.

Avaliar a eficiência da solicitação

Avalie a eficiência da solicitação usando estatísticas de consulta. As estatísticas de consulta mostram a proporção de linhas vistas em relação às linhas retornadas e de células vistas em relação às células retornadas, o que indica a eficiência da consulta. Melhore a eficiência da solicitação revisando os padrões de consulta ou o design do esquema. Para mais informações, consulte Receber estatísticas de consulta.

Verificar mudanças na configuração ou no perfil de app

Se a contagem de nós e a capacidade de transmissão permanecerem inalteradas, mas a utilização média da CPU aumentar, isso poderá resultar de mudanças nas estratégias de replicação ou coleta de lixo. Para mais informações, consulte Replicação e desempenho. Reverta qualquer mudança de configuração para replicação ou coleta de lixo.

Encaminhar para o suporte do Bigtable

Se as etapas anteriores não resolverem o problema, encaminhe para o suporte do Bigtable.

A seguir