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 (2)

  1. Learnand says:

    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!

  2. Learnand Boulson says:

    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

Skip to main content