Nesta página, descrevemos as métricas de latência oferecidas pelo Spanner. Caso seu aplicativo apresente alta latência, use essas métricas para diagnosticar e resolver o problema.
Confira 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 o tempo que o serviço do Spanner leva para processar uma solicitação. A métrica captura a quantidade real de tempo 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 no Spanner, como latência de rede ou latência de rede no aplicativo camada Para medir outros tipos de latência, use o Cloud Monitoring para instrumentar seu aplicativo com métricas personalizadas.
É possível visualizar gráficos das 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 dois segundos, O Spanner processou 99% das solicitações em menos de dois 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 dar uma olhada rápida nas 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 do Spanner
Caso seu aplicativo apresente latência acima do esperado, mas as métricas de latência do Spanner sejam significativamente inferiores à latência total de ponta a ponta, pode 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, em seguida, 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
Caso seu aplicativo apresente latência acima do esperado e as métricas de latência do Spanner também estejam altas, há algumas causas prováveis:
A instância precisa de mais capacidade de computação. Se a instância não tiver recursos recursos de CPU e o uso de CPU exceder a especificação máximo, talvez o Spanner não consiga processar suas solicitações com rapidez e eficiência.
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 elas incluírem um grande número de junções ou outras operações de uso intensivo de CPU, as consultas poderão usar uma grande parte dos recursos de CPU da 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:
Se você não encontrou muitas consultas com uso intensivo de CPU, adicione capacidade de computação à instância.
A adição da capacidade de computação fornece mais recursos de CPU e permite que o Spanner processe uma carga de trabalho maior.
Se você encontrou consultas com alto consumo de CPU, revise a execução de consultas planos para saber por que as consultas estão lentas e atualizar suas consultas para seguir as práticas recomendadas de SQL para no Spanner.
Também pode ser necessário analisar o design do esquema do banco de dados e atualizar o esquema para permitir consultas mais eficientes.
A seguir
- Monitore sua instância com o console do Google Cloud ou o console do Cloud Monitoring.
- Saiba como encontrar correlações entre alta latência e outras métricas.
- Entenda como reduzir a latência de leitura seguindo as práticas recomendadas de SQL e usando limitações de data e hora.
- Descubra as métricas de latência em tabelas de estatísticas de consulta, que podem ser recuperadas usando instruções SQL.
- Entenda como a configuração da instância afeta a latência.