A otimização de performance começa com a identificação das principais métricas, geralmente relacionadas à latência e à taxa de transferência. A adição do monitoramento para capturar e acompanhar essas métricas expõe pontos fracos no aplicativo. Com as métricas, a otimização pode ser realizada para melhorar as métricas de performance.
Além disso, muitas ferramentas de monitoramento permitem configurar alertas para suas métricas, para que você seja notificado quando um determinado limite for atingido. Por exemplo, é possível configurar um alerta para notificar quando a porcentagem de solicitações com falha aumentar em mais de X% dos níveis normais. As ferramentas de monitoramento podem ajudar a identificar a aparência da performance normal e identificar picos incomuns de latência, quantidades de erros e outras métricas importantes. A capacidade de monitorar essas métricas é especialmente importante durante períodos críticos de negócios ou depois que um novo código é enviado para a produção.
Identificar métricas de latência
Mantenha a interface responsiva o máximo possível, observando que os usuários esperam padrões ainda mais altos dos apps para dispositivos móveis. A latência também precisa ser medida e rastreada para serviços de back-end, principalmente porque pode levar a problemas de taxa de transferência se não for verificada.
As métricas sugeridas para rastreamento incluem o seguinte:
- Duração da solicitação
- Duração da solicitação na granularidade do subsistema (como chamadas de API)
- Duração do job
Identificar métricas de taxa de transferência
A taxa de transferência é uma medida do número total de solicitações atendidas em um determinado período. Ela pode ser afetada pela latência dos subsistemas. Portanto, talvez seja necessário otimizar a latência para melhorar a taxa de transferência.
Confira algumas métricas sugeridas para rastreamento:
- Consultas por segundo
- Tamanho da transferência de dados por segundo
- Número de operações de E/S por segundo
- Utilização de recursos, como uso de CPU ou uso da memória
- Tamanho do backlog de processamento, como pub/sub ou número de linhas de execução
Não apenas a média
Um erro comum na medição de performance é analisar apenas o caso médio. Embora isso seja útil, não fornece insights sobre a distribuição da latência. Uma métrica melhor para rastrear são os percentis de performance, por exemplo, os percentis 50, 75, 90 e 99 de uma métrica.
Geralmente, a otimização pode ser feita em duas etapas. Primeiro, otimize a latência do 90º percentil. Em seguida, considere o 99º percentil, também conhecido como latência de cauda: a pequena parte das solicitações que levam muito mais tempo para serem concluídas.
Monitoramento do lado do servidor para resultados detalhados
O perfil do lado do servidor geralmente é preferível para rastrear métricas. O lado do servidor geralmente é muito mais fácil de instrumentar, permite o acesso a dados mais granulares e está menos sujeito a perturbações de problemas de conectividade.
Monitoramento do navegador para visibilidade de ponta a ponta
Se a integração da API Google Ads veicular um front-end da Web para usuários finais, a criação de perfil do navegador poderá fornecer insights adicionais sobre a experiência do usuário. Ele pode mostrar quais páginas têm solicitações lentas, que podem ser correlacionadas ao monitoramento do lado do servidor para análise mais detalhada.
O Google Analytics também oferece monitoramento pronto para uso dos tempos de carregamento de páginas no relatório de Tempo na página do Analytics. Isso oferece várias visualizações úteis para entender a experiência do usuário no seu site, em particular:
- Tempos de carregamento da página
- Tempos de carregamento de redirecionamento
- Tempos de resposta do servidor
Monitoramento na nuvem
Há muitas ferramentas que podem ser usadas para capturar e monitorar métricas de performance do seu aplicativo. Por exemplo, é possível usar o Google Cloud Logging para registrar métricas de performance no seu projeto do Google Cloud e configurar painéis no Google Cloud Monitoring para monitorar e segmentar as métricas registradas.
Consulte o guia do Logging para um
exemplo de interceptor de registro gRPC personalizado escrito para a
biblioteca de cliente do Python. Nesse exemplo, o interceptor chama logger.log_struct() para enviar um dicionário Python de dados de registro estruturados para o Cloud Logging, que o Cloud Logging armazena no campo jsonPayload da entrada de registro:
logger.log_struct({
"method": method_name,
"elapsed_ms": elapsed_milliseconds,
"is_fault": is_fault,
})
Com esses dados disponíveis no Google Cloud, é possível criar métricas com base nos dados registrados para ter visibilidade do aplicativo pelo Google Cloud Monitoring. Siga o guia de métricas com base em registros definidas pelo usuário para criar métricas usando os registros enviados ao Google Cloud Logging.
Como alternativa, é possível usar as bibliotecas de cliente do Cloud Monitoring para definir métricas no código e enviá-las diretamente ao Monitoring, separadas dos registros.
Exemplo de métricas com base em registros
Suponha que você queira monitorar o valor is_fault para entender melhor as taxas de erros no aplicativo. Como logger.log_struct() grava campos de dicionário estruturados em jsonPayload em cada entrada de registro do Cloud Logging, é possível criar uma métrica de contador chamada ErrorCount com um filtro que corresponda a solicitações com falha, como jsonPayload.is_fault = true.
No Cloud Logging, os rótulos permitem agrupar as métricas em
categorias com base em outros dados nos registros. É possível configurar um rótulo STRING
chamado Method no campo jsonPayload.method
enviado ao Cloud Logging para detalhar a contagem de erros pelo
método da API Google Ads.
Com a métrica ErrorCount e o rótulo Method configurados, é possível
criar um novo gráfico no Cloud Monitoring para monitorar
ErrorCount, agrupado por Method.
Alertas
É possível configurar políticas de alertas no Cloud Monitoring e em outras ferramentas que especificam quando e como os alertas devem ser acionados pelas métricas. Para instruções sobre como configurar alertas do Cloud Monitoring, siga o guia para alertas sobre métricas com base em registros.