Pregunta

¿Qué puedo hacer para asegurar que cuando se activa una reinicio de la aplicación / grupo de aplicación, que la aplicación vuelva a estar disponible lo más rápido posible?

Mejor aún, ¿hay una manera de evitar que el reinicio de la aplicación cuando se producen los desencadenantes habituales? Al igual que la modificación del web.config, Global.asax o machine.config?

¿Fue útil?

Solución

No será un "auto-start" en función de ASP.NET 4.0 ( Scott Guthrie habla de ello ), pero eso no le ayudará ahora.

Por favor asegúrese de que el grupo de aplicaciones de su sitio web / aplicación se ejecuta en, no vaya a "dormir" automáticamente. Un defecto AppPool está activado y apague después de 20 minutos inactivty. Por lo que recuerdo esto no hace que la página web de la reconstrucción, pero hace que la primera solicitud es mucho más lento.

Pequeña nota, un página web del proyecto también se puede construir, por lo que su App_Code estará vacía y su carpeta bin contendrá un montón de .dll de (simplemente utilizar Preparar> Construir sitio web). Esto definitivamente voluntad hace que la primera petición a su sitio más rápido. No creo que una aplicación web entrará en funcionamiento más rápido que un precompilado página web del proyecto , pero es más fácil de manejar.

Otros consejos

Sí, moviéndose a aplicaciones web acelerará el proceso de reinicio. Otra cosa a hacer sería hacer que su global.asax tan limpio como absolutamente posible.

A pesar de aplicaciones web, el sitio hará un reinicio si cualquiera de estos archivos de configuración se modifican o si los ensamblados en su cambio de directorio bin. No se puede detener esto.

Reiniciar los tiempos debe ser bastante rápida en alrededor de 2 a 3 segundos. Sin embargo, he visto algunos archivos Global.asax bastante complicado que establecen algunos datos sobre el nivel de dominio que tuvieron hasta 20 segundos. Por supuesto, que estaban dispuestos a pagar el precio, ya que reduce algunos de sus tiempos normales de carga de página de 3 segundos a 0,1 segundos.

Principalmente, utilizamos proyectos de páginas web, por lo que supongo que cambiar a proyectos de aplicaciones web podría acelerar este proceso, ya que todos los archivos de código son pre-compilado en un .dll.

Cuando se utiliza proyectos web , yo pensaría que mover archivos App_Code en una biblioteca de clases externa podría también acelerar las cosas, ya que sería pre-compilado el código.

Para proyectos de aplicación Web, se puede utilizar un proyecto de implementación de Web ( VS2010 enlace de descarga) para precompilar el sitio en un archivo DLL similar a un sitio web del proyecto lo hace. Ver el artículo ScottGu sobre cómo utilizar WDPs .

Tengo un problema similar en el que estoy corriendo un sitio muy alto tráfico que recibe una buena 300+ peticiones / segundo. Un reinicio tarda un buen 90 segundos por lo menos para él.

Cuando hago un cambio que se reinicia el servidor, parece que el reinicio puestos hasta que todas las viejas peticiones (algunos de ellos muy larga) cerca. Puedo hacer el reinicio ocurre mucho más rápido matando a la instancia antigua w3wp.exe manualmente.

¿Hay alguna manera de forzar IIS para cerrar todas las conexiones de inmediato y hacer un reinicio duro? Un cierto ajuste en IIS o asp.net para controlar esto?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top