¿Cómo limitar la memoria utilizada por una aplicación en IIS?

17

Los procesos de trabajo de IIS están tomando mucha memoria en nuestros servidores. Quiero limitar la memoria que cada aplicación puede usar. No sé si debería establecer un límite en el Límite de memoria virtual o en el Límite de memoria privada. Cada aplicación en nuestro IIS está en su propio grupo de aplicaciones.

Si configuro el límite de memoria privada en 500MB y el límite de memoria virtual en 3GB. ¿Cuándo se recicla el grupo de aplicaciones? ¿Se recicla después de alcanzar los 500 MB o después de alcanzar los 3 GB?

kishore
fuente
¿Dónde están estas opciones de 'Límite de memoria virtual' y 'Límite de memoria privada' de las que habla?
Coronel Panic
1
@ColonelPanic En IIS7.5, están en la Advanced Settings -> Recyclingsección de un grupo de aplicaciones .
ngm

Respuestas:

16

IIS respetará ambos límites.

Si establece un límite de bytes privados de 500 MB, tan pronto como un proceso de trabajo intente comprometer 501 MB, IIS activará un nuevo proceso de trabajo y eliminará el anterior.

Si establece un límite de memoria virtual de 3 GB, tan pronto como un proceso de trabajo intente reservar 3.001 GB, IIS activará un nuevo proceso de trabajo y eliminará el anterior.

Si está en una plataforma de 64 bits, debe tener en cuenta que la aplicación ASP.NET reserva agresivamente memoria virtual. Como ejemplo, tengo una aplicación en una granja que usa solo 88 MB de bytes privados, pero ahora tiene 5,4 GB de tamaño virtual. Creo que la reserva de memoria virtual es una función de la RAM física en el servidor. También es importante comprender que en una plataforma de 64 bits, reservar grandes porciones de memoria virtual tiene cero impacto en el rendimiento.

Básicamente, si tiene problemas de consumo de memoria en un servidor IIS, la configuración que desea limitar es Memoria privada / Bytes, esto es lo que corresponde al uso real de la memoria.

Dominic D
fuente
Gracias Dominic, ¿hay alguna manera de establecer un proceso para usar memoria privada de 500Mb y una vez que cruce ese límite, comience a usar memoria virtual en el disco sin reciclar?
kishore
2
No que yo supiese. En una aplicación ASP.NET, una vez que comienza a tener problemas de bytes de confirmación, básicamente tiene 3 opciones. 1. Recicle el proceso cuando llegue al límite o todas las noches en una hora libre (obviamente no es preferible, y no olvide administrar los datos de la sesión correctamente si recicla durante una ventana de uso) 2. Obtenga memoria física adicional para la aplicación (agregue RAM a la granja de servidores, o muévase a una granja diferente, esta puede ser la solución más simple según su situación). 3. Modifique la aplicación de modo que use la memoria de manera más eficiente. (La mejor opción, pero puede ser difícil de implementar)
Dominic D
También noté la reserva agresiva de memoria en varias aplicaciones ASP.NET. ¿Alguien puede recomendar algunos buenos recursos sobre este tema para estudiar? Me gustaría entender más acerca de cómo y por qué sucede ... Lo que observo es que cuanto más memoria hay disponible, más memoria asignan las aplicaciones.
Tom Pažourek