asp.net mvc - vista - Retraso enorme en la primera solicitud de navegador a la aplicación web alojada Mono XSP
mvc c# (1)
Estamos utilizando el servidor web Mono (2.10) XSP4 para alojar una aplicación web ASP.Net MVC3 que se ejecuta en un Linux abierto (ARM). Al iniciar XSP4, demora algunos segundos hasta que esté listo y acepte solicitudes. No hay problema con eso hasta ahora.
Pero cuando se realiza la primera solicitud de un navegador / visitante de un sitio web, XSP4 usa toda la CPU que puede obtener durante aproximadamente 55 segundos hasta que la página web se muestre (con éxito) en el navegador web. Esto sucede después de cada inicio / reinicio de XSP.
Mi primer pensamiento fue que esta es la compilación justo a tiempo de toda la aplicación web. Así que construí un paquete de implementación que solo contiene los binarios, .css, .js y las vistas (.cshtml). Funcionó, pero aún tuvo esta gran demora.
Luego traté de compilar previamente esa aplicación web usando Visual Studio (como se indica en algunas notas de la versión Mono). Una vez más, el sitio web funcionó bien, pero la gran demora todavía estaba presente.
Algunas preguntas que realmente están en mi mente:
- ¿Alguien sabe lo que hace el servidor web XSP cuando llega la primera solicitud del navegador? ¿Es esta la compilación justo a tiempo, incluso si es una aplicación web precompilada?
- ¿Por qué lo está haciendo después de cada inicio otra vez?
- ¿Se puede reducir la enorme demora en general de alguna manera?
- ¿Se puede reducir el enorme retraso, por lo que solo se realiza en la primera solicitud del navegador después de una actualización de la aplicación weba (en caché entre las ejecuciones subsiguientes de XSP)?
Cualquier ayuda / ideas sería genial.
Actualización: Mientras tanto, descubrí que la demora es causada por el compilador de mono / ASP.Net dcms y compilando las vistas de la maquinilla de afeitar MVC3 en /tmp/root-aspnet.../ que está mapeada en la memoria y, por lo tanto, no es persistente. Ahora estoy buscando una forma de controlar dónde XSP4 / Mono.WebServer / Mono-Asp.Net almacena estos archivos compilados. Si alguien está familiarizado con esto, hágamelo saber ;-)
Esto podría ser una sobrecarga de compilación nativa (que es independiente de lo que hace la compilación previa). Usted podría verificar si AOTing las bibliotecas del sistema le dan una aceleración:
mono --aot /usr/lib/mono/1.0/mscorlib.dll
for i in /usr/lib/mono/gac/*/*/*.dll; do mono --aot $i; done