IIS: tiempo de espera inactivo frente a reciclaje

97

En IIS hay dos áreas (bueno, más de dos) donde puede ocurrir el reciclaje:

  1. En la sección "Modelo de proceso" → "Tiempo de espera inactivo" (20 minutos predeterminados)

y

  1. En la sección "Reciclar" → "Intervalo de tiempo regular" (predeterminado 1740 minutos)

Mis preguntas son:

  1. ¿Cuáles son las diferencias entre los dos métodos?
  2. ¿Cuáles son las implicaciones negativas de establecerlos en 0?
Ricky
fuente

Respuestas:

97

El tiempo de espera inactivo es si no se ha solicitado ninguna acción desde su aplicación web, el proceso se eliminará y liberará todo lo almacenado en la memoria.

Reciclar es una acción forzada en la aplicación donde su proceso se cierra y se inicia de nuevo, con fines de pérdida de memoria y salud del sistema.

El impacto negativo de ambos suele ser el uso de su sesión y el estado de la aplicación se pierde si se mete con el reciclaje a un tiempo más rápido. (Los usuarios registrados, etc.serán desconectados, si estuvieran a punto de "verificar", todo habría sido perdido "es por eso que el reciclaje tiene un valor de tiempo de espera tan grande, el tiempo de espera inactivo no importa porque nadie está conectado de todos modos y calcula 20 minutos y no hay acción, todavía no están" comprando "

Lo positivo sería deshacerse del tiempo de inactividad, ya que su sitio web responderá más rápido en su "primera" respuesta si no es un sitio muy activo donde un usuario tendría que esperar a que se cargue si tiene 1 usuario cada 20 minutos. decir. Por lo tanto, un sitio web que obtiene menos de 1 vez en 20 minutos, en realidad, querría aumentar este valor, ya que el sitio web tiene que cargarse nuevamente desde cero para cada usuario. pero si establece esto en 0 durante mucho tiempo, cualquier pérdida de memoria en el código podría, durante un cierto período de tiempo, apoderarse completamente del servidor.

MichaelEvanchik
fuente
¡Gracias! Eso tiene sentido. Mi principal dilema es que la "primera carga" está tardando mucho. Pensé que si establecía ambos en 0, entonces podría evitarlo. Sin embargo, el problema de la pérdida de memoria es un problema. ¿Hay alguna manera de "reciclar" pero luego "forzar" una solicitud para que el "acceso por primera vez" termine y se haga inmediatamente después del reciclaje? ¿O quizás programar el reciclaje a las 2 am y luego programar un "acceso por primera vez" a las 2:30 am? ¿Hay alguna forma en IIS de hacer eso?
Ricky
@Ricky Yo también estaba teniendo el problema de que el primero en llegar toma años. Debe configurar su grupo de aplicaciones startMode para que sea AlwaysRunning: msdn.microsoft.com/en-us/library/ee677285%28v=azure.10%29.aspx
Steve Hibbert
Esto también me resultó útil: simple-talk.com/blogs/2013/03/05/…
Steve Hibbert
3
@Silvermind: si la sesión se almacena en proceso, no se copiará al reciclarla. Vea aquí .
BornToCode
31

Desde aqui :

Una forma de conservar los recursos del sistema es configurar los parámetros de tiempo de espera inactivo para los procesos de trabajo en un grupo de aplicaciones. Cuando se configuran estas configuraciones, un proceso de trabajo se cerrará después de un período específico de inactividad. El valor predeterminado para el tiempo de espera inactivo es 20 minutos.

Compruebe también ¿Por qué el reciclaje del grupo de aplicaciones predeterminado de IIS está configurado en 1740 minutos?

Si tiene solo unos pocos sitios en su servidor y desea que siempre se carguen rápido, establezca esto en cero. De lo contrario, cuando tenga 20 minutos sin tráfico, el grupo de aplicaciones finalizará para que pueda iniciarse nuevamente en la próxima visita. El problema es que la primera visita a un grupo de aplicaciones debe crear un nuevo proceso de trabajo w3wp.exe que es lento porque es necesario crear el grupo de aplicaciones, ASP.NET u otro marco debe cargarse y luego su aplicación debe ser cargado. Eso puede tardar unos segundos. Por lo tanto, lo configuro en 0 cada vez que tengo la oportunidad, a menos que sea para un servidor que aloja muchos sitios que no siempre necesitan estar ejecutándose.

Rahul Tripathi
fuente
6

IIS ahora tiene

Idle Time-out Action : Suspend ajuste

Suspender es simplemente congelar el proceso y es mucho más eficiente que destruirlo.

nPcomp
fuente
0

He heredado una aplicación de escritorio que realiza llamadas a una serie de servicios web en IIS. Los servicios web (también) deben poder ejecutar procesos cronometrados, de forma independiente (sin tener el cliente encendido). De ahí que todos tengan temporizadores. Los temporizadores del servicio web se estaban apagando (¿pérdida de memoria?), Por lo que configuramos el tiempo de inactividad en 0 y los temporizadores permanecen activados.

DaniDev
fuente