asp.net - net - Las aplicaciones web Azure son realmente lentas
portal azure web (2)
He estado investigando un tiempo de calentamiento lento para mi aplicación de producción y obtuve algunos resultados inesperados.
Las pruebas en varias máquinas virtuales Azure mostraron que el tiempo de calentamiento está bien relacionado con el rendimiento del servidor de aplicaciones (por lo que no es una solicitud externa, incluido sql), pero lo que es realmente interesante es la comparación con Azure Web Apps y mi propia máquina local (todos los horarios son promedios de alrededor de 3 carreras):
VM A0: >1m
VM A2: 13s
VM D2V2: 6.8s
VM D5V2: 7.8s
Wep App P2: 25s
Web App S2: 26.5s
My local machine: 6.6s
Mi máquina local es un i5 con 3.3GHz.
La máquina local es más rápida a pesar de que se conecta a la misma base de datos de SQL Azure a través de Internet y la solicitud incluye la verificación del modelo de Entity Frameworks .
Todas las pruebas usan .NET 4.6.1, la versión más reciente en este momento.
Conclusión aparente:
- Mi escritorio de 4 años es más rápido que cualquier otro tamaño de Azure VM para trabajos que no son paralelizables.
- Azure Web Apps funciona con patatas incluso si está dispuesto a gastar 500 dólares al mes.
Esto parece sospechoso ¿Alguna idea de qué más podría estar pasando? ¿O qué probar?
EDITAR después de algunos perfiles: ninguno de los siguientes arroja luz sobre mi pregunta, pero sigue siendo información interesante (probado en otra máquina virtual A2 con un tiempo total de solicitud de 20 segundos mientras se adjunta el generador de perfiles):
- 58% está haciendo jits.
- El bloqueo de archivo IO es prácticamente nulo (la aplicación se ha iniciado antes, así que supongo que todas las partes dll requeridas están en la memoria caché).
- <1% son solicitudes de SQL Azure.
- El resto del tiempo de ejecución del 90% debería ser, por lo tanto, la ejecución de .NET o la sobrecarga del perfilador.
- El generador de perfiles tiene bastante sobrecarga, ya que la solicitud se ejecuta en aproximadamente 15 segundos sin él (utilicé una versión de prueba de JetBrains dotTrace, que realmente me gusta)
- 50% del tiempo es durante la primera solicitud con Entity Framework, el 80% de ella es jitting
- 15% es el primer uso de SignalR, casi sin jitter (haciendo algunas reflexiones sin sentido)
Casi no se hace paralelización.
Inicialmente, cuando implementamos nuestra aplicación web Azure App Service (alojada en Resource Group1) y nuestra base de datos Azure SQL (alojada en Resource Group2), la aplicación era muy lenta. El error que cometí fue que tanto RG1 vand RG2 estaban en dos ubicaciones diferentes. Más tarde, cuando cambiamos la ubicación de ambos RG (los recreamos en realidad) para que sean los mismos, las WebApps comenzaron a funcionar sin problemas.
Gracias, Prawin
Yo también tengo el mismo problema, lo arreglé moviendo o copiando los contenidos de mi sitio (Imágenes y Videos) a Azure Blob Storage. También podemos configurar Azure CDN para WebApps, VM, servicios en la nube y origen personalizado. Al probar este Azure CDN, el tiempo de carga de su sitio mejorará.