Por que stack trace APM não é suficiente para monitoramento completo de aplicativos web

Provavelmente é verdade dizer que se você perguntar a um usuário comum o que faz um ótimo aplicativo web, eles provavelmente diriam “velocidade”. Mas a velocidade é provavelmente o aspecto menos importante de um extenso resumo de elementos. Fatores como desenvolvimento de aplicativos e renderização no programa são provavelmente mais altos nessa lista. E o que compõe uma ótima aplicação de desempenho? E quando algo dá errado, como você sabe? Essas são algumas das perguntas que empilham monitoramento de rastreamento e monitoramento de desempenho de aplicações na web sintética definidas para responder. Ambos têm suas vantagens e desvantagens, mas este artigo se propunha a explicar o que torna uma ferramenta melhor para garantir que a experiência do usuário seja colocada na vanguarda da determinação do que faz um ótimo aplicativo web.

 

O que é um Stack Trace?

Um traço de pilha é um instrumento de investigação útil. Exibe o “Call Stack”, que são as pilhas de funcionalidades/metodologias que foram convocadas para o estado atual de execução do programa, no momento em que um caso especial desconhecido foi apresentado pelo compilador (ou o momento em que a trilha de pilhas foi produzida fisicamente).

Isso é excepcionalmente valioso, uma vez que não apenas lhe dá onde o erro ocorreu, ele também pode dar-lhe uma visão de como o programa acabou naquele ponto do programa. Seu objetivo é fornecer quais métodos foram chamados até o ponto em que o programa caiu e dá um resumo das chamadas de método que o aplicativo estava experimentando. Ele nos ajuda a entender como algo saiu do jeito que aconteceu, e mostra uma oportunidade de corrigir o erro. Sem esse rastreamento, essas ações ficariam desaparecidas, e qualquer erro se tornaria silencioso. O serviço se torna posteriormente o que é proeminentemente chamado de “caixa preta”.

 

O que é uma exceção?

Uma exceção é a coisa que a condição de tempo de execução usa para nos avisar que um erro foi encontrado. Modelos bem conhecidos são NullPointerException, IndexOutOfBoundsException ou AithmeticException. Cada uma delas é causada quando você tenta realizar algo que é literalmente inimaginável (pelo computador que é). Por exemplo, um NullPointerException será apresentado uma vez que você tentar referenciar um InvalidArticle

 

exceção

 

A imagem acima mostra um traço de pilha. Começamos para o início do resumo de “em…“, podemos dizer onde o erro ocorreu. O que estamos tentando descobrir é o primeiro encontro de uma chamada de método, que pode ser uma parte da nossa aplicação ou parte dos módulos são usados no aplicativo. Para esta situação, o infrator é “em com.example.myproject.Book.getTitle (Livro.java:16).“Nós podemos, consequentemente, abrir o Reserve.java e dê uma olhada na linha 16. Este é um caso básico do que acontece quando refazmos uma pilha.

Da mesma forma, também pode ser provocado por uma cadeia de isenções como a seguinte:

 

Isenções

 

O culpado neste caso é onde começa em “Causado por: java.lang. NullPointerException em com.example.myproject. Reserve.getId (Book.java:22) em com.example.myproject. Autor.getBookIds (Autor.java:36)

O que é distinto sobre este é a cláusula “Causado por” De vez em quando, as isenções terão várias áreas “Causadas por” Em alguns casos, você precisa pesquisar o “driver subjacente”, que pode ser um dos muitos segmentos dentro do backtrack.

 

Como o código de terceiros influencia o backtrack do Stack

Os aplicativos atuais frequentemente têm inúmeras camadas de chamada de função acionadas de forma cruzada (ou seja, uma função chamada de outros ou, em alguns casos em si). Para tornar as coisas cada vez mais confusas, temos regularmente inúmeras camadas de código de programação que adicionam à pilha de chamadas. O código de nossas bibliotecas de tempo de execução ou importadas pode reduzir a pureza do nosso call stack, dificultando a peruse ou desembaraçar enquanto fixa exceções. Agora você pode estar pensando, “O que esse bloco de saída faz para me ajudar a identificar bugs?”

 

Como chamar pilhas e traços ajudam na execução

Até agora, falamos principalmente sobre percalços de código, não sobre a execução. No momento em que um bug aparece, precisamos isolar as condições que abrangem sua aparência e reproduzi-los para reproduzir o bug. E no caso de desempenho, precisamos de uma abordagem para realizar as técnicas acima indicadas também. Temos que simular as condições atuais do quadro, reconsiderar nossas circunstâncias atuais, fazer mudanças necessárias e repetir as prévias das condições atuais do quadro para analisar os resultados.

A sintonia de execução começa descobrindo, estimando e atualizando para mitigar os maiores gargalos primeiro. Como produtores de qualquer módulo de ajuste de desempenho, devemos conhecer este procedimento de medição, atualização e otimização muito bem. Este é o momento em que pilhas de chamadas podem nos ajudar a examinar esse processo. Para obter as informações coletadas, essencialmente usamos o perfil geral como nossa prática. No momento em que o perfil acontece, é preciso representações ocasionais da condição atual da pilha de chamadas. No momento em que temos nosso instantâneo de informações, estamos prontos para ver os blocos de código que aparecem várias 14h, e desta forma um retrace pode representar uma possibilidade de melhorias de desempenho. Mas, para ter certeza absoluta, teremos que entender nosso procedimento para tomar essas medidas de estrutura do sistema. No entanto, há um problema aqui. O rastreamento de pilhas tem suas próprias limitações. Uma aplicação de ponta envolve inúmeros cálculos e, portanto, muitas pilhas de chamadas. Então, como vamos filtrar sensatamente e compreender as montanhas de informação?

 

Limitações de rastreamento de pilhas

De vez em quando você não pode garantir que você não tenha um erro. Por exemplo, na chance de você estar utilizando um aplicativo orientado pela Web em seu programa, você não pode impedir que o PC perca sua associação web (por exemplo, você não pode impedir o cliente de desengajar a rede de sistema do PC). O que acontece agora é que a biblioteca do sistema nos trata com uma isenção. Em um mundo perfeito, este é o ponto em que os engenheiros “pegam” o caso especial e o gerenciam. Isso implica que no modelo com associação de rede, você deve tentar reviver a associação ou informar o cliente. O engenheiro deve se lembrar, ao obter a isenção, que eles capturaram o caso que eles esperavam, então eles não devem utilizar proclamações abrangentes como “Exceção e” que obteriam todas as isenções. Isso acaba por ser um fator crucial na retração de pilhas. Ele não pega os casos especiais que tinham que ser tratados de uma certa forma, mas foram tratados de uma maneira totalmente diferente.

As ferramentas de rastreamento de pilha não são nem um pouco infalíveis em termos de aplicativos de monitoramento. Os conteúdos são difíceis de compilar, difíceis de compreender e quebram, e propensos a erros exaustivos.

 

Monitoramento Sintético

Ao contrário das ferramentas de rastreamento de pilha, o monitoramento sintético funciona criando trocas/transações de usuários simulados para o seu aplicativo, que se passa por como um usuário ou cliente médio pode percorrer seu aplicativo. Ele pode ser aplicado dentro do firewall, dentro do espaço do servidor para garantir que todas as máquinas estejam funcionando adequadamente, ou fora do firewall para dar dados sobre acessibilidade e execução do ponto de vista mundial. Essas chamadas de servidor e conteúdos de teste tornam-se monitorando “instrumentos” executando em frequências predefinidas, como a cada 5 minutos ou a cada 3hrs.

Esse tipo de monitoramento pode ser fundamental para o seu negócio, pois permite que você distingue problemas e pesquise se seu site ou aplicativos precisam de ajustes antes que os clientes finais sejam realmente impactados. Uma vez que esse tipo de verificação não depende do tráfego real da Web, um aplicativo ou página da Web pode ser monitorado a qualquer momento, de qualquer lugar, e os agentes de monitoramento podem ser configurados antes que os aplicativos entrem em produção. É por isso que muitos desenvolvedores se inclinam para o monitoramento sintético, pois dá visibilidade 24 horas por dia, 7 horas por semana, e fornece a vantagem para a organização corrigir erros antes que os clientes tropeçem nele.

 

Você precisa de monitoramento sintético?

A resposta menos complexa a esta pergunta é que você precisa de ajuda para garantir que seu aplicativo ou site esteja pronto para ação. Mas em uma nota muito mais técnica, a resposta genuína a este inquérito vai muito além disso. Um agente de monitoramento de qualidade não simplesmente rastreia seu site para garantir que ele esteja disponível. As administrações de qualidade verificarão registros de quadros de nomes da área, velocidade de transferência, banco de dados, bem como disponibilidade do sistema, carga de CPU, armazenamento de unidades, eventos, RAM e outros fatores básicos. Embora o tempo de atividade e o tempo de reação sejam coisas inquestionavelmente significativas para quantificar, a confiabilidade e consistência de sua aplicação ou página são adicionalmente vitais e medidas e devem ser configurados para tela para essas coisas.

Além disso, apenas verificar a acessibilidade e o tempo de atividade de suas APIs e aplicativos de dentro do firewall não é adequado quando você está procurando fornecer uma experiência de primeira linha. Os usuários podem acessar seus aplicativos de qualquer lugar do mundo, desde dispositivos, navegadores e redes variados. O monitoramento sintético permite que você imite esses procedimentos de negócios ou trocas de clientes, por exemplo, fazendo login, procurando itens, preenchendo formulários/pesquisas, adicionando coisas a carrinhos de compras, processo de saída, etc., de vários locais ao redor do mundo e revisando seu desempenho. Em seguida, você seria capaz de analisar detalhes de execução entre locais geográficos e etapas nas trocas e começar a definir seus planos de melhoria.

 

Rastreamento de pilha e monitoramento sintético: conclusão

O monitoramento sintético adota uma abordagem proativa externa para ajudar a descobrir problemas antes de seus clientes. Caso os procedimentos corretos sejam utilizados, o monitoramento sintético pode lhe dar o mesmo ponto de vista de seus usuários finais e clientes, sem mencionar como eles estão se saindo – e se os clientes ficarão felizes com a experiência. Este não é o caso com rastreamento de pilha. É, sem dúvida, um protocolo de análise muito confiável e competente, mas só pode traçar os passos de um evento fracassado de forma anterior. Isso nos leva a um entendimento muito firme de que o rastreamento de pilhas, combinado com o monitoramento sintético, pode ajudar a unir a pilha completa e fornecer uma poderosa solução de monitoramento de desempenho. Experimente a plataforma dotcom-monitor completa gratuitamente por 30 dias.

 

Latest Web Performance Articles​

Start Dotcom-Monitor for free today​

No Credit Card Required