2008-12-19 20 views
7

Alojamos un sitio web ASP.NET bastante grande (escrito por nosotros mismos) para nuestros clientes. Consiste en un servicio web, un sitio web y un sitio web de servicios de imágenes, los tres en su propio directorio virtual. Los tres directorios virtuales están juntos en un grupo de aplicaciones. El conjunto tiene ambos límites de memoria (memoria virtual máxima y memoria máxima utilizada) configurados en 500 megabytes.El proceso de trabajo se recicla porque alcanzó su límite de memoria virtual

Sin embargo, el grupo de aplicaciones sufre muchos reciclamientos, incluso con solo un usuario a la vez. El mensaje de registro de eventos dice:

Un proceso de trabajo con identificador de proceso de 'xxxx' grupo de aplicaciones 'xxxx' ha solicitado un reciclaje porque alcanzó su límite de memoria virtual.

Sin embargo, al observar el proceso de trabajo con Process Explorer no se muestra nada que admita este mensaje. ¿Qué contadores debería mirar para observar la memoria que de hecho está limitada por ambas configuraciones?

Actualización 1

Observando el proceso en el Administrador de tareas muestra una 'Uso de memoria' y 'tamaño vm de alrededor de 100 MB, sigue el proceso se recicla con el mensaje anterior. 5 GB de memoria física disponible en el servidor ...

Actualización 2

Aunque el sitio web es bastante grande, el problema se concentra en una pequeña porción de la aplicación. Ejecuta una consulta (utilizando Oracle) y vincula los resultados a una gridview y un repetidor webcontrol. Los resultados consisten en una breve descripción y un ícono (cargado a través del sitio web que sirve imágenes). Si ejecuto 10 acciones de búsqueda, uno tras otro, cada uno dando 9 resultados, el proceso de trabajo muestra el uso de mem y tamaño vm de alrededor de 100 MB y recicla ...

Actualización 3 conmutación del uso de la imagen que sirve el sitio web no produce mejores resultados. Entonces creo que es justo decir que el problema es otra cosa.

Respuesta

0

Pruebe usar el Administrador de tareas de Windows. En la pestaña de procesos, vaya al menú Ver y elija Seleccionar columnas. Seleccione la columna Tamaño de memoria virtual y luego observe el valor para el proceso de trabajo asp.net.

1

Del mismo modo que una observación ... Si su "servir imagen" sitio pasa a hacer cualquier imagen en línea de procesamiento/generación, que puede tragar rápidamente la memoria al no presentarse en cualquier Dispose() recursos disponibles - en particular los que están envolviendo nativa funcionalidad ...

No es una respuesta directa a su pregunta, pero podría ayudar a examinar el problema subyacente que está causando el uso desenfrenado de la memoria.

+0

Gracias por la pista, pero ya he mirado en eso. –

+0

¡Debe ser una aplicación bastante resistente, entonces, si se trata de un juego con un solo usuario! –

0

tuve el mismo problema con una máquina virtual cuando nos cambiamos de memoria tamaño de 4Gb a 8Gb (irónicamente).Encontré este blog que explica que podemos usar "límite de memoria privada" pero no "límite de memoria virtual" con sistema de 64 bits, porque: "Si estás en una plataforma de 64 bits (y yo), la aplicación ASP.NET reserva memoria virtual agresivamente" .

http://blog.walteralmeida.com/2011/07/iis7-private-memory-limit-versus-virtual-memory-limit.html

Cuestiones relacionadas