Medidas de tempo de resposta para o aplicativo da Web do IIS

2

Eu tenho um aplicativo da web dot net e gostaria de medir o tempo de resposta. Atualmente tenho duas medidas. A medida "interna" é feita dentro do próprio aplicativo da web. A medida "externa" é o tempo de ida e volta do cliente (incluindo atraso na rede, etc.).

Obviamente, o tempo de resposta interno é sempre menor que o tempo de resposta externo, às vezes de forma bastante significativa.

O que eu quero é outra medida (possivelmente mais de 1) que esteja entre essas duas medições. Como eu faria essas medições? Por exemplo, uma medida que ignora o tempo de transmissão da rede, mas inicia assim que a solicitação atinge a máquina do servidor / IIS / meu pool de aplicativos / etc.

Infelizmente, não tenho conhecimento suficiente do IIS para esclarecer essa questão, quanto mais responder sozinho.

Editar: algumas informações adicionais

O aplicativo da web é um mecanismo de cálculo c #. Não há acesso ao banco de dados, não há usuários. O aplicativo expõe um ponto final do WCF. O tempo de resposta é razoavelmente consistente em torno de 200ms, mas às vezes picos, e são esses picos que me preocupam. Uma fonte de picos é a reciclagem do pool de aplicativos (a cada 29 horas), mas podemos agendar isso.

Estou medindo o desempenho de um cliente no próprio servidor para ignorar a rede. Isso elimina muitos dos picos, mas não todos. Estou executando a carga em 30% do uso da CPU pelo servidor. O uso da CPU do cliente é insignificante.

    
por Rob 25.09.2013 / 14:37

4 respostas

1

What I want is another (possibly more than 1) measure that's between these two measurements. How would I take such measurements?

Se você tiver acesso aos desenvolvedores que criaram este aplicativo, faça com que eles escrevam um pequeno pacote de instrumentação (sem bloqueio!) que permita retirar esse contador diretamente do aplicativo.

Se você não puder, precisará começar a depurar o próprio aplicativo para determinar por quanto tempo e onde ele está gastando tempo na execução.

Como esta é uma máquina com Windows, você pode começar com o monitor de processos para obter um alto nível de idéia do que acontece durante cada solicitação. Então você pode ir para ferramentas de depuração mais robustas, como o logger do windbg. exe .

    
por 26.07.2015 / 07:24
0

Rápido e simples: inicie sua medição diretamente na mesma máquina servidora ou (se você tem medo de implicações de carga) na mesma rede (geralmente um servidor de aplicação web DMZ está localizado).

Na verdade, você está ciente dos diferentes fatores de desempenho de aplicativos da Web:

  • o tempo de resposta da sua aplicação (apenas a sua aplicação, apenas um utilizador)
  • o tempo de resposta bruto do seu aplicativo (inclui aplicativo; pilha de servidores da Web; vários usuários; acesso simultâneo a suas fontes de dados, dispositivos e rede)

É absolutamente normal ver diferenças aqui. A medição seria duvidosa se não fosse.

No entanto, se você quiser evitar erros de medição causados por diferentes velocidades de rede, largura de banda, problemas do lado do cliente e assim por diante, inicie a medição do tempo de resposta no seu host local (e marque os resultados de acordo com isso) ou aumente o número de medições pontos (clientes), período de tempo de medição e calcular uma quantia média (você pode criar seu próprio JavaScript para essa finalidade ou usar ferramentas existentes, por exemplo, o Google Analytics).

    
por 28.09.2013 / 21:24
0

Parece um trabalho para contadores de desempenho. Se você clicar em iniciar - > Executar - > Perfmon.msc, em seguida, no aplicativo que é executado, você pode adicionar todos os tipos de monitoramento para diferentes aspectos do IIS e do sistema. Ele deve ser capaz de fornecer respostas de ponta a ponta para solicitações do IIS, incluindo quanto tempo eles esperaram para serem processados e por quanto tempo foram processados.

Ele também permite que você os salve em um arquivo ou banco de dados, caso deseje efetuar o registro em períodos mais longos.

Você diz que a CPU está funcionando a 30%. É um computador multi-core? Se ele tiver 4 núcleos e seu código não estiver em paralelo, você poderá estar sobrecarregando o processador, mesmo que não pareça assim.

    
por 11.10.2013 / 05:00
0

Parece que você está procurando uma ferramenta de gerenciamento de desempenho de aplicativos. Existem vários aplicativos .NET e, dependendo da ferramenta e do seu orçamento, é possível avaliar o desempenho de solicitações da Web individuais, obter rastros de transação em linhas de código específicas, capturar erros do aplicativo, correlacionar o desempenho dos subsistemas do servidor (disco, CPU, memória ), monitorar o desempenho das dependências (camadas / mecanismos de cache, serviços externos da Web, bancos de dados) e muito, muito mais.

Algumas ferramentas comuns de APM que podem ser encontradas para você começar a pesquisar são Dynatrace, AppDynamics, New Relic e Lean Sentry

Tenha em mente que a simples compra de uma dessas ferramentas não resolve nada para você. Você terá que contratar um especialista ou aprender a ferramenta (s) bem o suficiente para coletar informações acionáveis, mas você provavelmente terá muito mais detalhes que simplesmente não são "visíveis" quando você monitora de fora do aplicativo sem nenhum gancho / apis / etc que revelam um pouco do que está acontecendo sob o capô.

    
por 22.06.2017 / 23:44