O Caso da Página ASP.NET Extremamente Lenta

O cliente estava enfrentando um problema de lentidão em um dos seus sites. Os usuários não conseguiam navegar entre as páginas alegando que a página ficava “em branco” e depois gerava timeout.

Coletamos um DUMP no momento da lentidão para analisarmos a causa da lentidão.

Comandos Executados

.load psscor2

Esse comando é utilizado para carregar a extensão de depuração de código gerenciado Psscor2 que é utilizada para ajudar no diagnóstico de problemas em aplicações do Framework .Net, para as versões 2.0, 3.0 e 3.5.

!threadpool

No momento em que o DUMP foi coletado a quantidade de threads em execução era superior a metade do valor limite do pool de threads.

Através do resultado é possível verificar que o problema de desempenho não é decorrente do consumo de processamento.

 !eestack –ee 

 Esse comando permite investigar o callstack das threads gerenciadas. Observe que a maioria das threads estavam executando os seguintes métodos:

Praticamente todas as threads estavam executando os mesmos métodos.

kb

Através desse commando é possível analisar a pilha de chamadas não gerenciada dessas threads.

 

 

Observe que o callstack da thread acima mostra que ela está bloqueada por outra thread. O mesmo ocorre para a maioria das outras threads.

 !syncblk

A figura abaixo mostra que a thread 156 está bloqueando (lock) as demais threads (348 no total).

 

 

A análise do callstack da thread 156 mostra que a ferramenta CA Wily Introscope é quem está controlando essa thread e não está liberando o LOCK.

O problema foi resolvido desativando o serviço CA Wily Introscope.

Comments

  • Anonymous
    December 02, 2014
    boa tarde pessoal, estou fazendo uma rede social, e contratei uma empresa indiana para desenvolver-la, porém não entendo muita coisa a respeito de desenvolvimento web. Então, após algumas consultas, vi que a tecnologia utilizada por eles é a ASP.NET + MVC5 + RAZOR. Banco de dados: NEO4j + CYPHER ENTITY+ LAMBDA (para manuseio de dados) Minha pergunta é: essa tecnologia irá suportar mais de 10 milhões de usuários? se não, o por que? se sim, o por que? Hoje, o sistema está praticamente pronto, está hospedado em um servidor Azure (A8) e está muito lento, e comecei a sentir que eles estão perdidos no que fizeram. existe algum recurso para deixar o site mais rápido? Meus custos com servidores serão mais caro por estar utilizando essas linguagens? Estamos pensando em abandonar o projeto com essa empresa Indiana, e contratar uma Brasileira que irá desenvolver em NODE.js (estarei fazendo a coisa certa ou devo permanecer acreditando que o ASP.NET poderá funcionar?) Alguém aí pode me ajudar? obrigado!

  • Anonymous
    December 02, 2014
    boa tarde pessoal, estou fazendo uma rede social, e contratei uma empresa indiana para desenvolver-la, porém não entendo muita coisa a respeito de desenvolvimento web. Então, após algumas consultas, vi que a tecnologia utilizada por eles é a ASP.NET + MVC5 + RAZOR. Banco de dados: NEO4j + CYPHER ENTITY+ LAMBDA (para manuseio de dados) Minha pergunta é: essa tecnologia irá suportar mais de 10 milhões de usuários? se não, o por que? se sim, o por que? Hoje, o sistema está praticamente pronto, está hospedado em um servidor Azure (A8) e está muito lento, e comecei a sentir que eles estão perdidos no que fizeram. existe algum recurso para deixar o site mais rápido? Meus custos com servidores serão mais caro por estar utilizando essas linguagens? Estamos pensando em abandonar o projeto com essa empresa Indiana, e contratar uma Brasileira que irá desenvolver em NODE.js (estarei fazendo a coisa certa ou devo permanecer acreditando que o ASP.NET poderá funcionar?) Alguém aí pode me ajudar? obrigado! meu email: learnandiscovery@gmail.com