Objetivos
Ao final deste tutorial, você irá:
- Entenda como usar a interface de serviços externos
- Identifique quaisquer serviços externos lentos, como chamada de API
- Revise o desempenho no nível da transação
Por que olhar para serviços externos
O recurso de serviços externos permite observar a atividade upstream e downstream de um serviço. Esses serviços externos upstream ou downstream podem ser seus próprios serviços ou serviços de terceiros e chamada de API. Quando esses serviços externos têm um tempo de resposta lento, eles atrasam seu aplicativo, causando lentidão.
Identifique serviços externos lentos
Vamos dar uma olhada em como identificar serviços externos lentos:
Navegue até a interface de serviços externos: Vá para one.newrelic.com > (select an app) > Monitor > External services. Alterne Show new view no canto superior esquerdo se ainda não estiver ativado e clique em Map no canto superior direito.
A dependência do seu aplicativo, também conhecida como dependência upstream, está listada à esquerda. À direita estão os serviços que dependem do seu aplicativo, conhecidos como serviços downstream. Você pode ver quais serviços estão saudáveis, bem como as taxas de transferência e o consumo de tempo de cada serviço. Você pode selecionar um serviço para ver informações mais detalhadas sobre ele.
Passe o mouse sobre todas as suas dependências upstream e tente identificar aquelas que tenham um alto tempo de resposta ou contagem trace . Preste atenção específica àqueles que apresentam picos significativos em sua história recente. Se você encontrar um serviço suspeito, aprofunde-se passando o mouse sobre ele e selecionando o botão View traces . Este novo painel exibe informações sobre esse rastreamento da transação, que registra as chamadas de função disponíveis, chamadas de banco de dados e chamadas externas daquela transação.
Existem várias maneiras de usar as informações fornecidas nesta página, então fique à vontade para explorar. Aqui está um exemplo de fluxo de trabalho:
Procure a linha mais grossa e mais escura no mapa e siga-a até o serviço upstream ou downstream.
Clique no vértice upstream ou downstream.
Veja o detalhamento da transação entre os dois serviços.
Neste exemplo, uma das bordas mais grossas (linhas) vai do serviço Order-Composer até o do armazém endpoint no serviço Order Status.
Se você decidir que uma transação específica está demorando mais, clique nessa transação para focar especificamente em sua dependência.
Nesta visualização detalhada, você pode ver a transação entre o serviço Order-Composer e o endpoint do warehouse no serviço Order-Status.
A partir de qualquer ponto deste fluxo, consulte os gráficos de desempenho de apoio, que mostram as mudanças ao longo do tempo.
Se você chegar a um ponto no detalhamento em que deseja ver distributed tracing, clique em List no canto superior direito e, em seguida, clique em Traces na tabela.
Dica
Os mapas de serviço, como o usado acima, são poderosos na compreensão dos relacionamentos complexos dentro do seu sistema. Quanto mais serviços você tiver no instrumento, mais observabilidade em seu sistema você desbloqueará. Saiba mais sobre mapas de serviço.
A visualização de mapa nas etapas anteriores é ótima para uma visualização visual do seu sistema, mas se você estiver com dificuldades para identificar seu serviço externo problemático, a visualização de lista pode ser mais útil, fornecendo dados em gráficos e tabelas.
Primeiro navegue até a visualização de lista selecionando List no canto superior direito. Esta página mostra várias tabelas e gráficos que você pode usar para identificar serviços externos lentos. Você usará esta página para fazer a triagem de seus serviços:
Dê uma olhada no gráfico
Response time
. Isso mostra seus cinco serviços externos mais lentos. Observe que, embora sejam os mais lentos, eles são lentos apenas em relação ao restante dos seus serviços. Eles podem não ser lentos o suficiente para causar interrupções no seu aplicativo.
Dê uma olhada em
Traced error count
. Há uma grande quantidade de erros? Em caso afirmativo, de que serviço eles vêm?
Na tabela inferior, classifique os serviços por
% change
. Isso mostrará seus serviços classificados de acordo com o quanto sua duração ou rastreamento chamado mudou recentemente. Há algum serviço que teve um aumento drástico recentemente?
Aprofunde-se em quaisquer serviços identificados acima selecionando View traces ao lado do nome do serviço na tabela inferior. Use essas informações para substituir esses serviços, otimizar a chamada de API ou distribuir cargas entre seus serviços
Verifique seu trabalho
Você examinou o problema, agora é hora de identificar uma solução. Sua correção será específica para o seu problema, mas aqui estão alguns exemplos:
- Você percebe que está chamando uma API duas vezes por acidente. Remova a chamada duplicada para metade do seu tempo de resposta total.
- Uma chamada de API específica começa a ser limitada todos os dias por volta do meio-dia, e você percebe que atinge os limites gratuitos da API naquele horário todos os dias. Encontre uma API alternativa ou atualize seu acesso.
- Sob carga pesada, você atinge outro serviço interno além dos limites, resultando em um tempo de resposta lento. Distribua essa carga por mais serviços ou encontre uma maneira de reduzir ou otimizar sua carga.
Envie sua correção para o desenvolvimento e, em seguida, execute um teste de carga típico para ter uma ideia de como seu aplicativo será executado em produção.
Ao monitor seus serviços externos, fique atento aos seus gráficos:
- Seus serviços externos estão atingindo um tempo de resposta aceitável? Você Terminou!
- Eles melhoraram? Use o que você aprendeu para descobrir por que eles melhoraram além do normal.
- Você ainda está vendo um ritmo de resposta lento? Talvez haja um problema no banco de dados ou talvez sua transação esteja lenta: