Esta página descreve as métricas de latência que o Spanner fornece. Se a sua aplicação tiver uma latência elevada, use estas métricas para ajudar a diagnosticar e resolver o problema.
Pode ver estas métricas na Google Cloud consola e na consola do Cloud Monitoring.
Vista geral das métricas de latência
As métricas de latência do Spanner medem o tempo que o serviço do Spanner demora a processar um pedido. A métrica capta o tempo real decorrido e não o tempo de CPU usado pelo Spanner.
Estas métricas de latência não incluem a latência que ocorre fora do Spanner, como a latência de rede ou a latência na camada de aplicação. Para medir outros tipos de latência, pode usar o Cloud Monitoring para instrumentar a sua aplicação com métricas personalizadas.
Pode ver gráficos de métricas de latência na Google Cloud consola e na consola do Cloud Monitoring. Pode ver métricas de latência combinadas que incluem leituras e escritas, ou pode ver métricas separadas para leituras e escritas.
Com base na latência de cada pedido, o Spanner agrupa os pedidos em percentis. Pode ver as métricas de latência para a latência do 50.º percentil e do 99.º percentil:
Latência do 50.º percentil: a latência máxima, em segundos, para os 50% mais rápidos de todos os pedidos. Por exemplo, se a latência do percentil 50 for de 0,5 segundos, o Spanner processou 50% dos pedidos em menos de 0,5 segundos.
Por vezes, esta métrica é denominada latência mediana.
Latência do percentil 99: a latência máxima, em segundos, para os 99% mais rápidos dos pedidos. Por exemplo, se a latência do percentil 99 for de 2 segundos, o Spanner processou 99% dos pedidos em menos de 2 segundos.
Latência e operações por segundo
Quando uma instância processa um pequeno número de pedidos durante um período, as latências do 50.º e 99.º percentil durante esse período não são indicadores significativos do desempenho geral da instância. Nestes casos, um número muito pequeno de valores atípicos pode alterar drasticamente as métricas de latência.
Por exemplo, suponhamos que uma instância processa 100 pedidos durante uma hora. Neste caso, a latência do percentil 99 para a instância durante essa hora é a quantidade de tempo que demorou a processar o pedido mais lento. Uma medição de latência baseada num único pedido não é significativa.
Como diagnosticar problemas de latência
As secções seguintes descrevem como diagnosticar vários problemas comuns que podem causar uma latência integral elevada na sua aplicação.
Para ver rapidamente as métricas de latência de uma instância, use a Google Cloud consola. Para examinar as métricas mais detalhadamente e encontrar correlações entre a latência e outras métricas, use a consola do Cloud Monitoring.
Latência total elevada, latência do Spanner baixa
Se a sua aplicação tiver uma latência superior à esperada, mas as métricas de latência do Spanner forem significativamente inferiores à latência total de ponta a ponta, pode haver um problema no código da aplicação. Se a sua aplicação tiver um problema de desempenho que faça com que alguns caminhos de código sejam lentos, a latência total de ponta a ponta para cada pedido pode aumentar.
Para verificar se existe este problema, teste o desempenho da sua aplicação para identificar caminhos de código que sejam mais lentos do que o esperado.
Também pode comentar o código que comunica com o Spanner e, em seguida, medir novamente a latência total. Se a latência total não se alterar muito, é pouco provável que o Spanner seja a causa da latência elevada.
Latência total elevada, latência do Spanner elevada
Se a sua aplicação tiver uma latência superior à esperada e as métricas de latência do Spanner também forem elevadas, existem algumas causas prováveis:
A sua instância precisa de mais capacidade de computação. Se a sua instância não tiver recursos de CPU suficientes e a utilização da CPU exceder o máximo recomendado, o Spanner pode não conseguir processar os seus pedidos de forma rápida e eficiente.
Algumas das suas consultas causam uma elevada utilização da CPU. Se as suas consultas não tirarem partido das funcionalidades 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 junções ou outras operações com utilização intensiva da CPU, as consultas podem usar uma grande parte dos recursos da CPU para a sua instância.
Para verificar se existem estes problemas, use a consola do Cloud Monitoring para procurar uma correlação entre a utilização elevada da CPU e a latência elevada. Além disso, verifique as estatísticas de consultas da sua instância para identificar consultas com utilização intensiva da CPU durante o mesmo período.
Se verificar que a utilização da CPU e a latência são elevadas ao mesmo tempo, tome medidas para resolver o problema:
Se não encontrou muitas consultas com utilização intensiva da CPU, adicione capacidade de computação à instância.
A adição de capacidade de computação oferece mais recursos de CPU e permite que o Spanner processe uma carga de trabalho maior.
Se encontrou consultas com utilização intensiva da CPU, reveja os planos de execução de consultas para saber por que motivo as consultas são lentas e, em seguida, atualize as consultas para seguir as práticas recomendadas de SQL para o Spanner.
Também pode ter de rever o design do esquema da base de dados e atualizar o esquema para permitir consultas mais eficientes.
O que se segue?
- Monitorize a sua instância com a Google Cloud consola ou a consola do Cloud Monitoring.
- Saiba como encontrar correlações entre a latência elevada e outras métricas.
- Saiba como reduzir a latência de leitura seguindo as práticas recomendadas de SQL e usando limites de data/hora.
- Saiba mais sobre as métricas de latência nas tabelas de estatísticas de consultas, que pode obter através de declarações SQL.
- Compreenda como a configuração da instância afeta a latência.