2011-02-17 8 views
5

Tengo una aplicación asp.net ejecutándose en un servidor de producción.ASP.Net IIS7 Obtención de uso de CPU por solicitud

El uso de la CPU en el servidor es muy alto, 80-90%.

No obstante, cada solicitud no tarda demasiado, a menos que la CPU haya alcanzado su punto máximo al 100%.

Necesito obtener algunos datos de perfil para determinar si el uso de la CPU alta se debe a un pequeño número de solicitudes de CPU alta o, si solo es una carga alta general.

Puedo agregar más núcleos a la máquina y también crear una granja de servidores web de la aplicación, pero voy a necesitar pruebas para justificar los costos y el rendimiento en el futuro.

¿Hay alguna manera de registrar en un archivo el uso de CPU para cada página solicitada?

Respuesta

6

En realidad, no se puede determinar directamente el uso de CPU para solicitudes individuales utilizando contadores. El proceso de trabajo maneja las solicitudes ASP.NET, cuya carga se distribuye en todos los núcleos de CPU disponibles. Puede medir el uso de CPU por cada núcleo o por proceso completo, pero no por solicitud.

Puede aislar las solicitudes de CPU que necesitan indirectamente utilizando IIS7 Advanced Logging. Puede descargarlo desde here. Lee this blog para aprender a habilitar el registro personalizado. Debería agregar un campo de "Utilización de CPU" a la definición de registro. El nuevo archivo de registro de IIS mostrará la utilización de la CPU en cada línea de solicitud. Sin embargo, esta no es la utilización real de la CPU para el procesamiento de solicitud, sino simplemente la utilización de la CPU durante el proceso de solicitud. Aún puede usar esta información para determinar las solicitudes sospechosas que potencialmente pueden estar hambrientas de CPU.

Pruebe aún más estas solicitudes individualmente a través de la prueba de carga para ver si alguna de ellas crea un uso excesivo de la CPU con una carga razonable. Las herramientas de prueba de carga de Microsoft están incluidas en VSTS 2010 Ultimate edition o VSTS 2008 Test Edition o Team Suite. Alternativamente, puede usar WCAT, un generador de carga HTTP de línea de comandos de Microsoft gratuito. Además, desarrollamos una extensión gratuita de Fiddler para pruebas de carga llamada StresStimulus que reproduce las sesiones de Fiddler con varios patrones de carga y métricas de rendimiento de gráficos.

Sea cuidadoso al ejecutar la prueba de carga en producción. Puede ejecutar cada solicitud bajo una carga conveniente solo por unos segundos. Si no puede encontrar páginas sin optimizar, utilice este factor para justificar la actualización del hardware.

+0

+1 para el registro avanzado de IIS. –