Dado un sistema .NET 4 relativamente típico en un entorno SOA (es decir, Windows Server 2008 R2, servicios web RESTful en IIS 7, servicios de Windows para mensajería NServiceBus, SQL Server 2008 R2, etc.) ¿cuáles son las mejores prácticas o soluciones de facto (sin etiqueta de precio de la empresa) para realizar un monitoreo de rendimiento 24x7 en producción?Monitoreo de rendimiento continuo de aplicaciones .NET en producción?
No necesariamente la cantidad de CPU/Memoria/Disco IO que consume, sino más bien cuántas llamadas CreateAccount() se hicieron por minuto, cuál es el tiempo promedio que toma el método generateResponse() y detecta picos delta inusuales entre, por ejemplo, generateResponseStarted y generateResponseComplete (se invocó el método (que a su vez puede llamar a un tercero) y la respuesta está lista para ser devuelta, respectivamente).
Después de buscar en Google, parece que las opciones son para perfiladores de bajo nivel (como dotTrace) e implementar Contadores de rendimiento y consumir aquellos con PerfMon u otro producto de tipo OpManager.
¿Qué recomendarías? ¿La implementación de contadores de rendimiento para una aplicación en tiempo real degradaría significativamente el rendimiento en el sistema de producción? Si no, ¿hay algunas buenas bibliotecas que simplifiquen la implementación en .NET? En caso afirmativo, ¿cómo monitorean las personas el rendimiento de sus aplicaciones que no sea memory-disk-cpu?
@Ryan Hayes
Gracias, estoy buscando una manera de ver una inusual ralentización o picos en los sistemas de producción. Por ejemplo, todo fue bueno durante la prueba de estrés, pero por alguna razón, la tercera parte en la que confiamos está teniendo problemas o DB se está desacelerando debido al bloqueo de subprocesos, o la SAN está cediendo, o cualquier otro escenario inesperado. Los perfiles de bajo nivel son demasiados gastos indirectos mientras se encienden los contadores solo cuando hay un problema demasiado tarde en ese punto. Además, nos faltarán datos históricos para compararlo (necesitaría algún tipo de sistema de alerta para cuando el delta está fuera de un umbral aceptable). Me pregunto cómo la gente supervisa el rendimiento de sus sistemas de producción y, en su experiencia, cuál sería el mejor enfoque para el tipo de monitoreo que no es de memoria/cpu/servidor.
Los contadores de rendimiento son rápidos y están diseñados para este tipo de cosas. Incluso las rutas "críticas" como las redes en Windows las usan. – nos