Usar o Application Insights para localizar e diagnosticar problemas de desempenho em um aplicativo

O Application Insights coleta a telemetria de um aplicativo para ajudar na análise da operação e do desempenho dele. Com essas informações, você pode identificar possíveis problemas ou as melhorias no aplicativo que mais afetariam os usuários. Este tutorial o conduz pelo processo de analisar o desempenho dos componentes do servidor do seu aplicativo e a perspectiva do cliente.

Você aprenderá como:

  • Identifique o desempenho das operações do servidor.
  • Analise as operações do servidor para determinar a causa raiz do desempenho lento.
  • Identifique as operações mais lentas para o cliente.
  • Analise os detalhes das exibições de página com linguagens de consulta.

Pré-requisitos

Para concluir este tutorial:

  • Instale o Visual Studio 2019 com as cargas de trabalho a seguir:
    • Desenvolvimento Web e ASP.NET
    • Desenvolvimento do Azure
  • Implantar um aplicativo .NET no Azure e habilitar o SDK do Application Insights
  • Habilitar o Application Insights Profiler para seu aplicativo.

Entrar no Azure

Entre no portal do Azure.

Identificar operações lentas do servidor

O Application Insights coleta detalhes de desempenho para as diferentes operações em seu aplicativo. Ao identificar as operações com maior duração, é possível diagnosticar possíveis problemas ou direcionar o desenvolvimento contínuo para melhorar o desempenho geral do aplicativo.

  1. Selecione Application Insights e, em seguida, selecione sua assinatura.

  2. Para abrir o painel Desempenho, selecione Desempenho no menu Investigar ou clique no gráfico de Tempo de resposta do servidor.

    Captura de tela mostrando a exibição “Desempenho”.

  3. A tela Desempenho mostra a contagem e a duração média de cada operação para o aplicativo. É possível usar essas informações para identificar as operações que mais afetam os usuários. Neste exemplo, GET Customers/Details e GET Home/Index são candidatos prováveis à investigação devido à duração e número de chamadas relativamente grandes. Outras operações raramente chamadas podem ter uma duração maior, mas sua melhora teria um efeito mínimo.

    Captura de tela mostrando o painel do servidor “Desempenho”.

  4. Atualmente, o gráfico mostra a duração média de todas as operações ao longo do tempo. Você pode alternar para o 95º percentil para encontrar os problemas de desempenho. Adicione as operações de seu interesse fixando-as no gráfico. O gráfico mostra que há alguns picos a serem investigados. Para isolá-los ainda mais, reduza a janela de tempo do gráfico.

    Captura de tela mostrando “Fixar operações”.

  5. O painel de desempenho à direita mostra a distribuição de durações para diferentes solicitações da operação selecionada. Reduza a janela para iniciar em torno do 95º percentil. O cartão de insights Três principais dependências pode informar rapidamente que as dependências externas provavelmente estão contribuindo para transações lentas. Pressione o botão com o número de exemplos para ver uma lista deles. Em seguida, selecione qualquer exemplo para ver os detalhes da transação.

  6. É possível ver rapidamente que a chamada para a tabela Fabrikamaccount Azure é a que mais contribui para a duração total da transação. Também é possível ver que uma exceção causou a falha. Selecione qualquer item na lista para ver seus detalhes no lado direito.

    Captura de tela mostrando os detalhes da transação completa da operação.

  7. O Profiler ajuda a aprofundar os diagnósticos no nível do código mostrando o código real que foi executado para a operação e o tempo necessário para cada etapa. Algumas operações podem não ter um rastreamento porque o Profiler é executado periodicamente. Ao longo do tempo, mais operações devem ter rastreamentos. Para iniciar o Profiler para uma operação, selecione Rastreamentos do Profiler.

  8. O rastreamento mostra os eventos individuais de cada operação para que seja possível diagnosticar a causa raiz durante a operação geral. Selecione um dos principais exemplos com maior duração.

  9. Selecione Caminho crítico para realçar o caminho específico de eventos que mais contribuem para a duração total da operação. Neste exemplo, é possível ver que a chamada mais lenta é a do método FabrikamFiberAzureStorage.GetStorageTableData. A parte que leva mais tempo é o método CloudTable.CreateIfNotExist. Se esta linha de código for executada toda vez que a função for chamada, chamadas de rede e recursos de CPU desnecessários serão consumidos. A melhor maneira de corrigir o código é colocar essa linha em algum método de inicialização que seja executado somente uma vez.

    Captura de tela mostrando os detalhes do Profiler.

  10. A Dica de Desempenho na parte superior da tela é compatível com a avaliação de que a duração excessiva é devido à espera. Selecione o link de espera para ver uma documentação sobre a interpretação dos diferentes tipos de eventos.

    Captura de tela mostrando uma dica de desempenho.

  11. Para realizar análises adicionais, clique em Baixar rastreamento e baixe o rastreamento. É possível exibir esses dados usando o PerfView.

Usar dados de logs para o servidor

Os logs fornecem uma linguagem de consulta avançada que pode ser usada para analisar todos os dados coletados pelo Application Insights. É possível usar esse recurso para realizar análises profundas em dados de solicitação e desempenho.

  1. Retorne ao painel de detalhes da operação e clique no ícone LogsExibir em Logs (Analytics).

  2. A tela Logs é aberta com uma consulta para cada uma das exibições no painel. Você pode executar essas consultas como elas estão ou modificá-las conforme suas necessidades. A primeira consulta mostra a duração para essa operação ao longo do tempo.

    Captura de tela mostrando uma consulta de logs.

Identificar operações lentas do cliente

Além de identificar os processos do servidor a otimizar, o Application Insights pode analisar a perspectiva de navegadores cliente. Essas informações podem ajudar na identificação de possíveis melhorias nos componentes do cliente e até mesmo de problemas com diferentes navegadores ou locais.

  1. Selecione Navegador em Investigar e clique em Desempenho do navegador. Como alternativa, selecione Desempenho em Investigar e alterne para a guia Navegador pressionando o botão de alternância Servidor/Navegador no canto superior direito para abrir o resumo de desempenho do navegador. Essa exibição fornece um resumo visual de diversas telemetrias do aplicativo da perspectiva do navegador.

    Captura de tela mostrando o resumo do navegador.

  2. Selecione um dos nomes de operação, pressione o botão Exemplos no canto inferior direito e clique em uma operação. Os detalhes da transação completa são abertos no lado direito e é possível ver as Propriedades da exibição de página. É possível ver os detalhes do cliente que está solicitando a página, incluindo o tipo de navegador e a localização. Essas informações podem ajudá-lo a determinar se há problemas de desempenho relacionados a determinado tipos de clientes.

    Captura de tela mostrando as propriedades de exibição de página.

Usar dados de logs para o cliente

Assim como os dados de desempenho do servidor coletados, o Application Insights disponibiliza todos os dados do cliente para análises profundas com logs.

  1. Retorne ao resumo do navegador e clique no ícone LogsExibir em Logs (Analytics).

  2. A tela Logs é aberta com uma consulta para cada uma das exibições no painel. A primeira consulta mostra a duração para diferentes exibições de página ao longo do tempo.

    Captura de tela mostrando a tela “Logs”.