Estoy desarrollando sitios basados en la plataforma .NET. Por lo general, implemento estos sitios en mi IIS local, para poder probarlos y ver su funcionalidad antes de lanzarlos. Sin embargo, cada vez que reinicio Windows, parece que los sitios tardan mucho tiempo en ejecutarse por primera vez.
Sé acerca de JIT y también estoy al tanto de esta pregunta , pero no responde a mi pregunta.
¿JIT ocurre cada vez que reinicia Windows? ¿Está relacionado con la creación del proceso w3wp.exe? ¿Por qué los sitios son tan lentos para la primera solicitud después de cada reinicio?
Respuestas:
Este problema es la compilación JIT. El grupo de aplicaciones necesita tiempo para construir las bibliotecas antes de que pueda comenzar a procesarlas. Esto se puede acelerar utilizando un script de calentamiento, pero es algo que debe suceder. También depende de si está utilizando un sitio web o un proyecto de aplicación web. Un sitio web es JIT para cada página, por lo que el primer éxito es lento y cada nuevo acceso a la página también tiene un tiempo de compilación adicional. Los proyectos de aplicaciones web están precompilados, por lo que no debería sufrir tanto este golpe, pero las bibliotecas aún deben cargarse. Cuantas más bibliotecas / herramientas tenga, peor será este golpe. Aquí hay algunos enlaces que discuten el calentamiento:
http://weblogs.asp.net/gunnarpeipman/archive/2010/01/22/iis-application-warm-up-module.aspx http://blogs.iis.net/steveschofield/archive/2009/05/30 /application-pool-warm-up.aspx /programming/2063461/iis-web-applications-warmup http://sharepoint.smayes.com/2011/06/application-pool-specific-warm -up-scripts /
fuente
La reacción lenta en su primera solicitud se debe a que IIS solo inicia / carga un sitio o grupo de aplicaciones en su primera solicitud entrante. Y después de un período de tiempo fijo, no llegan nuevas solicitudes entrantes al servidor. IIS detiene el sitio nuevamente (reciclaje del grupo de aplicaciones).
ASP.NET 4.0 tiene una nueva característica llamada inicio automático. Con esta función, puede configurar un grupo de aplicaciones o un sitio individual para que se inicie antes de cualquier solicitud. Esto se activa en el momento del arranque (cuando se inicia IIS) o cuando actualiza un sitio ASP.NET (que detiene el sitio).
Necesita IIS 7.5 para usar esto.
También hay una opción para realizar ciertas tareas adicionales cuando se inicia el inicio automático, ej. precargar datos en caché.
fuente
Parte del problema es también el GAC. Los lugares de las bibliotecas deberán verificarse la seguridad cada vez que se carguen, lo que significa que se llevará a cabo una carga completa de trabajo de tipo de cifrado, y esto ralentiza mucho las cosas. Hubo una charla sobre el rendimiento de WPF hace un tiempo de MS que describió este problema: su respuesta fue "no ponga cosas en el GAC si no puede evitarlo"
fuente
IIS tiene una característica molesta (a veces) para sitios web de bajo tráfico. Recicla los procesos de trabajo no utilizados, lo que causa que el primer usuario acceda al sitio; a veces demora extremadamente larga (más de 30 segundos). http://dotnettimes.wordpress.com/2014/03/24/fixing-slow-initial-load-for-iis-web-site/
fuente