Tengo un problema de rendimiento en un sitio que hemos creado, y no estoy exactamente seguro de cómo comenzar a diagnosticarlo.
La breve descripción es: Tenemos un sitio muy pequeño ( http://hearablog.com ) con muy poco tráfico, en un servidor dedicado deficiente, la CPU siempre es muy alta, a veces se mantiene al 100% durante minutos, y w3wp.exe está tomando la mayor parte. Un escenario típico es que w3wp.exe toma el 60% y SQL Server toma aproximadamente el 30%. Nuestro DB también es bastante pequeño.
Descripción larga y más detalles:
El sitio está alojado en un servidor muy malo por Cari.Net. Desde el principio, tuvimos la sensación de que el servidor no se comportaba correctamente, ya que algunas cosas tomarían demasiado tiempo, por lo que esto podría ser un problema de configuración desde el principio. También puede ser que estemos obteniendo un servidor virtual mientras se supone que tenemos uno dedicado, aunque no tenemos evidencia que indique esto, excepto por el hecho de que el servidor tiende a ser bastante lento.
El servidor es Windows 2008 Standard de 64 bits, con SQL 2008 Express
El hardware es un Celeron 2.80 GHz, 1Gb RAM
El sitio web está desarrollado en ASP.Net MVC, utilizando Entity Framework para el acceso a datos.
Ahora, este es un hardware bastante malo, pero he tenido otros servidores con estos tipos, con HW equivalente (o peor), y el rendimiento es mucho mejor que este. Dicho esto, los otros servidores tienen W2003 y SQL2005, y estoy usando ASP.Net "WebForms" 2.0, sin MVC, sin LINQ, sin EF; así que no estoy seguro de si ir a 2008 / lo demás significa que se espera una gran penalización de rendimiento.
Estoy sirviendo archivos MP3 (5-20 Mb) regularmente, lo cual es una carga un poco inusual, ¿tal vez está causando algún tipo de problema?
¿Causaría eso que w3wp use mucha CPU?El uso del disco parece muy bajo. La memoria suele rondar el 90%, pero el uso del disco parece indicar que no está paginando demasiado.
Recibo toneladas de correos electrónicos todos los días sobre los tiempos de espera de SQL, para consultas que toman más de 30 segundos, aunque todas nuestras consultas son bastante sencillas (o deberían serlo, pero EF puede estar arruinándolo).
Así es como se ve el monitor de recursos en uno de estos "sprints" de 100% de CPU, en caso de que haya algo útil allí.
Y una instantánea de algunos contadores de rendimiento:
Ahora, lo que me confunde mucho es que el uso de CPU de w3wp es tan alto. Realmente no debería estar haciendo mucho ... Así que mis preguntas son ...
- ¿Hay alguna forma de descubrir "qué" está haciendo? ¿Quizás incluso perfilarlo?
- ¿Algún contador de rendimiento que debería mirar?
- ¿Es de esperar esto dada esta configuración de hardware / software?
- ¿Esto podría deberse a algún tipo de falla de configuración? ¿Dónde comenzaría a buscar?
Muchas gracias.
Daniel Magliola