users password net mvc google form aspnet asp asp.net asp.net-mvc restart diagnostics

asp.net - google - reset password mvc asp net



ASP.NET MVC ¿Por qué mi aplicación sigue reiniciando? (4)

Tengo un sitio web ASP.NET MVC que recibe aproximadamente 6500 visitas diarias, en una plataforma de alojamiento compartido en Server Intellect. Sigo viendo reinicios de aplicaciones en los registros y no puedo entender por qué.

He leído el artículo de Scott Gu aquí: http://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx e implementé la técnica, y esto es lo que aparece en mi registro:

Application Shutdown: _shutDownMessage=HostingEnvironment initiated shutdown HostingEnvironment caused shutdown _shutDownStack=at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at System.Web.Hosting.HostingEnvironment.InitiateShutdownInternal() at System.Web.Hosting.HostingEnvironment.InitiateShutdown() at System.Web.Hosting.PipelineRuntime.StopProcessing()

Parece que ocurre cada cinco minutos.

¿Hay alguna otra forma de depurar esto?

ACTUALIZACIÓN: Aquí están los ajustes del grupo de aplicaciones mencionados por Softion:

UPC

  • Límite: 0
  • Acción límite: no hay acción
  • Intervalo límite: 5 minutos

Modelo de proceso

  • Tiempo de espera inactivo: 20 minutos
  • Tiempo máximo de respuesta de ping: 90 segundos
  • Tiempo límite de inicio: 90 segundos

Protección contra fallas rápidas

  • Habilitado: verdadero
  • Intervalo de falla: 5 minutos

Reciclaje

  • Límite de memoria privada: 100 MB
  • Intervalo de tiempo regular: 1740 minutos (29 horas)
  • Límite de solicitud: 0
  • Tiempos específicos: ninguno
  • Límite de memoria virtual: 0

¿IIS está configurado para reciclar el grupo de aplicaciones con frecuencia?

¿Hay algún tipo de pérdida de memoria fuera de control en el grupo de aplicaciones?


Puede obtener fácilmente el motivo del cierre por HostingEnvironment. Leíste el artículo de Scott Gu, pero te perdiste sus comentarios.

var shutdownReason = HostingEnvironment.ShutdownReason;

Si el motivo es HostingEnvironment, verifique los parámetros del grupo de aplicaciones de IIS que controlan el reciclaje. He puesto un punto rojo cerca de cada uno. Verifique la descripción en el cuadro de ayuda inferior en su propia copia para obtener información completa.

Puede pedirle a su proveedor que le dé el archivo applicationHost.config donde se configuran todos estos parámetros. Lo encuentran en C: / Windows / System32 / inetsrv / config. Estoy seguro de que también puedes obtenerlos usando alguna API .NET.

Para 6500 hits al día, que es una tasa de hits muy baja, estoy apostando a que el "tiempo de espera inactivo" se establece en 5 millones.

Actualizar (mover los comentarios a aquí // jgauffin)

  • Límite de CPU 0 = deshabilitado.
  • Tiempo de espera inactivo del modelo de proceso: 20 minutos (20 millones sin una solicitud recicla su aplicación).
  • Protección Rapid-Fail habilitada (5mn). Necesitas saber el máximo de fallas que cuentan. Si su aplicación arroja más de esta excepción, en 5 millones se reciclará.
  • Límite de memoria privada: 100 MB. Sí, deberías hacer un perfil, este es un límite bajo.
  • Intervalo de tiempo regular: 1740 minutos (29 horas): se reciclará cada 29 h.
  • Límite de solicitud: 0 (deshabilitado).
  • Límite de memoria virtual: 0 (deshabilitado).
  • Protección Rapid-Fail habilitada (5mn). Necesita contar con el máximo de fallos. Si su aplicación arroja más de esta excepción, en 5 millones se recicla. Si se recicla cada 5 millones, esto debería ser lo que hay que verificar. Debe haber 0 excepción no controlada en subprocesos de trabajo secundarios. Envuelva su código en un intento de captura allí.

Requiere un poco de conocimiento sobre lo que hace su aplicación. Aquí hay una lista de cosas que pueden hacer que la aplicación se reinicie / reinicie o incluso que se apague.

  • Exception
  • OutOfMemoryException
  • Cualquier excepción no controlada que bloquea un hilo
  • CodeContracts utiliza Environment.FailFast cuando se produce una violación de contrato

Las excepciones son bastante fáciles de rastrear si puede reproducir el problema con un depurador adjunto, puede ingresar a Visual Studio y habilitar todas las excepciones cuando el código de usuario no las detecte. A veces revelará cosas interesantes que, de lo contrario, se ocultan.


re actualización:

La configuración solicitada a la ayuda del proveedor, pero es mucho mejor pedir información sobre el motivo de los reinicios, como mencioné en mi respuesta original, es decir, las entradas de registro reales de los reinicios como mencioné en mi respuesta original. De aquellos que pueden saber específicamente lo que se activó, he visto que sucede uno que llega a diferentes límites.

Realmente tienes que:

perfile su aplicación con una cantidad realista de datos de prueba

Mi dinero está en alcanzar los límites de recursos establecidos por su proveedor de alojamiento.

Antes de volverse loco con la optimización sin un objetivo, póngase en contacto con su proveedor y pídale que le brinde información sobre los reinicios.

Recicla típicos:

  • inactivo x cantidad de tiempo / como 15 minutos
  • más de x cantidad de memoria / como 200 MB
  • más del x% de procesador en y tiempo / como 70 en 1 minuto
  • un reciclaje diario

Una vez que conoce el caso, debe averiguar qué está tomando esos recursos. Para ello, debe configurar su aplicación con una cantidad realista de datos de prueba. Saber si se trata de memoria o procesador puede ayudar a saber qué buscar.