Estamos viendo, bajo carga, que los datos de sesión se corrompen o faltan, pero las sesiones en sí permanecen presentes.Sesiones de ASP.NET dañadas bajo carga
Nuestro sitio web está alojado en IIS 7 ejecutando ASP.Net 4.0 y usando el estado de sesión InProc en una granja de servidores web con un total de 4 servidores detrás de un equilibrador de carga de Cisco ACE Appliance.
En este momento el problema es aleatorio, no podemos reproducir el problema a voluntad. Esta aplicación web ha estado funcionando correctamente durante los últimos siete meses.
Nos damos cuenta de que Microsoft no recomienda el uso de InProc con granjas de servidores web, incluso si se utilizan sesiones fijas.
Tenemos un entorno de laboratorio, razonablemente idéntico a nuestro entorno de producción, pero no podemos reproducirlo bajo una carga considerable (utilizamos WAPT).
En nuestro entorno de producción, hemos intentado aislar solo un servidor detrás del equilibrador de carga para eliminar el "salto del servidor" causado por el equilibrador de carga. El problema persiste, sin embargo, incluso cuando se ejecuta en un servidor. No vemos ningún reciclaje de AppPool o IIS en la producción. Como práctica estándar, reciclamos los grupos de aplicaciones de producción a diario a las 3 a.m. EST, y hemos disfrutado meses de disponibilidad en el sistema operativo.
Lo que se almacena en sesión es una amplia variedad de objetos, desde tipos simples (enteros y cadenas) hasta todo nuestro carrito de compras (un objeto gráfico complejo) e incluso una instancia de control de usuario (.ascx). Debido a la imposibilidad de serializar fácilmente muchos de estos objetos, no podemos pasar al almacenamiento fuera de proceso de la sesión en un período de tiempo razonable.
Alguien sugirió tratar de capturar una sesión HTTP usando Fiddler. El problema con la ejecución de Fiddler es que no podemos reproducir el problema de manera intencional. Por lo tanto, esto nos impide capturar una traza HTTP de un evento de falla a medida que ocurre. Los registros de seguimiento de WAPT en nuestro laboratorio probablemente proporcionarían los mismos datos que Fiddler, pero como dije, no podemos reproducirlo allí.
lo agradecería enormemente cualquier penetraciones cualquiera puede tener ...
¿Tiene alguna información sobre qué datos de la sesión están dañados? ¿Son los carros de compras? ¿Es aleatorio? ¿Cómo sabes si no puedes reproducirlo? Y estoy seguro de que ya lo escuchó antes, por lo que podría sonar como un disco roto, es posible que desee hacer algo acerca de la necesidad de almacenar un gráfico de objetos completo de los carritos de compra de sus usuarios en sesión y el almacenamiento de un instancia de control de usuario también. – Sumo
Sabemos que no podemos reproducirlo porque recibimos correos electrónicos con rastros de pila cuando sucede, coincidentes con las llamadas de los clientes. A menudo son valores aleatorios, pero uno en particular parece estar cayendo, que proviene de una propiedad compartida de solo lectura que envuelve el acceso a esta variable de sesión. Es bastante aleatorio, pero definitivamente sucede bajo carga porque mi gente de servicio al cliente no comienza a recibir quejas hasta después de que ha pasado un tiempo después de que se inicia el grupo de aplicaciones. Sí, sabemos que tenemos que sacar ese gráfico de objeto obsceno y el control del usuario de la sesión, pero esa solución está a unas semanas de distancia. :/ –
¿Puedes publicar más detalles sobre esta variable compartida? – Sumo