Estou com um problema de desempenho em um site que criamos e não sei exatamente como começar a diagnosticá-lo.
A descrição resumida é: Temos um site muito pequeno ( http://hearablog.com ) com muito pouco tráfego, em um servidor dedicado de baixa qualidade, a CPU é sempre muito alta, às vezes permanece em 100% por minutos e w3wp.exe está tomando a maior parte. Um cenário típico é o w3wp.exe leva 60% e o SQL Server leva cerca de 30%. Nosso banco de dados também é bem pequeno.
Descrição longa e mais detalhes:
O site está hospedado em um servidor muito ruim por Cari.Net. Desde o início, tínhamos a sensação de que o servidor não se comportava corretamente, como algumas coisas levariam muito tempo, então isso poderia ser um problema de configuração desde o início. Também pode ser que tenhamos um servidor virtual enquanto deveríamos ter um servidor dedicado, embora não tenhamos evidências que indiquem isso, exceto pelo fato de o servidor tender a ser bastante lento.
O servidor é o Windows 2008 Standard de 64 bits, com o SQL 2008 Express
O hardware é uma Celeron de 2,80 GHz, 1 Gb de RAM
O site é desenvolvido no ASP.Net MVC, usando o Entity Framework para acesso a dados.
Agora, este é um hardware bastante ruim, mas já tive outros servidores com esses caras, com HW equivalente (ou pior), e o desempenho é muito melhor que este. Dito isto, os outros servidores têm W2003 e SQL2005, e estou usando o ASP.Net "WebForms" 2.0, sem MVC, sem LINQ, sem EF; portanto, não tenho certeza se ir para 2008 / outras coisas significa uma grande penalidade de desempenho.
Estou servindo arquivos MP3 (5-20 Mb) regularmente, o que é uma carga um pouco incomum, talvez isso esteja causando algum tipo de problema?
Isso faria com que o w3wp usasse muita CPU?O uso do disco parece muito baixo. A memória geralmente fica em torno de 90%, mas o uso do disco parece indicar que não está paginando muito.
Recebo toneladas de e-mails todos os dias sobre o tempo limite do SQL, para consultas com duração superior a 30 segundos, embora todas as nossas consultas sejam bastante diretas (ou devam ser, mas a EF pode estar estragando tudo).
É assim que o monitor de recursos se parece em um desses "sprints" de 100% da CPU, caso haja algo útil lá.
E um instantâneo de alguns contadores de desempenho:
Agora, o que me confunde muito é que o uso da CPU do w3wp é tão alto. Na verdade, não deveria estar fazendo muito ... Então, minhas perguntas são ...
- Existe alguma maneira de descobrir "o que" está fazendo? Talvez até o perfil?
- Algum contador de desempenho que eu deveria estar olhando?
- Isso é esperado devido a essa configuração de hardware / software?
- Isso pode ser causado por algum tipo de falha de configuração, onde você começaria a procurar?
Muito obrigado.
Daniel Magliola