Usar métricas para diagnosticar a latência

Nesta página, descrevemos as métricas de latência fornecidas pelo Spanner. Caso seu aplicativo apresente alta latência, use essas métricas para diagnosticar e resolver o problema.

É possível visualizar essas métricas no console do Google Cloud e no console do Cloud Monitoring.

Visão geral das métricas de latência

As métricas de latência do Spanner medem quanto tempo leva para o serviço Spanner processar uma solicitação. A métrica captura o tempo real decorrido, não a quantidade de tempo de CPU que o Spanner usa.

Essas métricas de latência não incluem a latência que ocorre fora do Spanner, como a latência da rede ou a latência dentro da camada do aplicativo. Para medir outros tipos de latência, use o Cloud Monitoring para instrumentar seu aplicativo com métricas personalizadas.

É possível visualizar gráficos de métricas de latência no console do Google Cloud e no console do Cloud Monitoring. Também é possível visualizar métricas de latência combinadas que incluem leituras e gravações, ou visualizar métricas distintas para leituras e gravações.

Com base na latência de cada solicitação, o Spanner agrupa as solicitações em percentis. É possível visualizar as métricas de latência do 50º percentil e do 99º percentil:

  • Latência do 50º percentil: a latência máxima, em segundos, das solicitações mais rápidas. Nesse caso, o número de solicitações consideradas é 50%. Por exemplo, se a latência do 50o percentil for de 0,5 segundo, o Spanner processou 50% das solicitações em menos de 0,5 segundo.

    Algumas vezes, essa métrica é chamada de latência mediana.

  • Latência do 99º percentil: a latência máxima, em segundos, das solicitações mais rápidas. Nesse caso, o número de solicitações consideradas é 99%. Por exemplo, se a latência do 99o percentil for de 2 segundos, o Spanner processou 99% das solicitações em menos de 2 segundos.

Latência e operações por segundo

Quando uma instância processa um pequeno número de solicitações durante determinado período, as latências do 50º e do 99º percentis durante esse período não são indicadores significativos do desempenho geral da instância. Nessas condições, um número muito pequeno de outliers pode alterar drasticamente as métricas de latência.

Por exemplo, imagine que uma instância processe 100 solicitações durante uma hora. Nesse caso, a latência do 99º percentil da instância durante essa hora é o tempo necessário para processar o pedido mais lento. Uma medida de latência com base em uma única solicitação não é significativa.

Como diagnosticar problemas de latência

Nas seções a seguir, veja como diagnosticar vários problemas comuns capazes de levar seu aplicativo a alta latência de ponta a ponta.

Para acessar rapidamente as métricas de latência de uma instância, use o console do Google Cloud. Para examinar as métricas mais de perto e encontrar correlações entre a latência e outras métricas, use o console do Cloud Monitoring.

Alta latência total, baixa latência no Spanner

Se o aplicativo apresentar latência maior do que o esperado, mas as métricas de latência do Spanner forem significativamente menores do que a latência total de ponta a ponta, poderá haver um problema no código do aplicativo. Caso seu aplicativo tenha um problema de desempenho que cause lentidão em alguns caminhos do código, a latência total de ponta a ponta para cada solicitação pode aumentar.

Para verificar esse problema, faça um benchmark de seu aplicativo para identificar os caminhos do código que estão mais lentos do que o esperado.

Também é possível comentar o código que se comunica com o Spanner e medir a latência total novamente. Se a latência total não mudar muito, é improvável que o Spanner seja a causa da alta latência.

Alta latência total, alta latência do Spanner

Se o aplicativo apresentar latência maior do que o esperado e as métricas de latência do Spanner também forem altas, há algumas causas prováveis:

  • A instância precisa de mais capacidade de computação. Se a instância não tiver recursos de CPU suficientes e a utilização de CPU dela exceder o máximo recomendado, talvez o Spanner não consiga processar as solicitações de maneira rápida e eficiente.

  • Algumas de suas consultas causam alta utilização da CPU. Se as consultas não aproveitarem os recursos do Spanner que melhoram a eficiência, como parâmetros de consulta e índices secundários, ou se incluírem um grande número de mesclagens ou outras operações com uso intensivo da CPU, as consultas poderão usar uma grande parte dos recursos da CPU para a instância.

Para verificar esses problemas, use o Console do Cloud Monitoring para procurar uma correlação entre alta utilização da CPU e alta latência. Verifique também as estatísticas de consultas da sua instância para identificar se há consultas que exigem muito consumo de CPU durante o mesmo período.

Se você descobrir que a utilização de CPU e a latência estão altas ao mesmo tempo, faça algo para solucionar o problema:

A seguir