2011-02-07 19 views
6

Actualmente estoy cargando una prueba de una aplicación ASP.NET. Estoy cargando con 500 usuarios en la aplicación, y mientras se está ejecutando estoy comprobando, en una consola perfmon.exe, los contadores "Sessions Actives" y "Sessions Timed Out" en el servidor web.ASP.NET Contador "Sessions Timed Out" (perfmon.exe)

En mi web.config, el tiempo de espera de la sesión es de 3 minutos (para fines de prueba).

Por lo tanto, según la prueba, el contador "Sesiones Activas" permanece en aproximadamente 900 sesiones activas, lo que supongo es normal debido a los 500 usuarios activos y otros 400 cuyas sesiones no han agotado el tiempo.

Pero cuando miro el contador de "Tiempo de espera de la sesión", aumenta de manera constante. Simplemente baja gradualmente cuando finaliza la prueba de carga.

¿Qué es este contador exactamente? Según tengo entendido, son las sesiones desaprobadas las que aún no han sido limpiadas (¿por el recolector de basura?) Y todavía están usando memoria.

Desde nuestra aplicación utiliza un enorme ammount de la memoria, estoy tratando de encontrar exactamente donde es que la memoria.

Respuesta

1

El contador parece estar indicando lo que está sucediendo. es decir, a medida que las sesiones que están activas se inician, el contador para activo va al número correcto ... y en algún momento comienzan a desaparecer y se dispara el tiempo de espera de la sesión para aumentar (es decir, las sesiones que el ASP descarta sumariamente) Infraestructura .NET). No estoy seguro de lo que esperas ver. Recomiendo leer los capítulos, 15, 16 y 17 del libro Improving .NET Application Performance and Scalability. Son bastante esclarecedores en este sentido.

+0

De hecho, lo que realmente necesito saber es si estas sesiones de tiempo de espera aún utilizan memoria. Gracias por el enlace, lo verificaré hoy. – Johnny5

+0

Bueno, después de probar un poco más, este temporizador no baja hasta que se reinicie el grupo de aplicaciones (como, iisreset). [Br] Pero parece que la sesión expirada no se limpia (la memoria no se libera) hasta mi loadtest termina. – Johnny5

+0

¿Tiene algún contenido de RCW ejecutándose en la sesión? por ej. ¿tiene acceso a cualquier objeto COM heredado y lo almacena en la sesión? Los he visto causar que la carga se mantenga alta. También se siente como si quisiera mirar otros contadores para descubrir qué es lo que está comiendo memoria. He utilizado los capítulos que he mencionado anteriormente para darme indicaciones sobre dónde se está llevando a cabo. Específicamente, los contadores GC son de gran ayuda (gen0, gen1 y gen2). – gbvb