2010-02-08 25 views
6

Tengo una aplicación web escrita en ASP.Net 3.0 usando C#, la máquina de producción es un servidor Windows 2003 con IIS 6.0 y SQL Server 2005.aplicación ASP.Net corre lento en la primera vez

Aplicación Estructura

continuación se muestra la estructura de mi aplicación web ASP.net:

aplicación de la raíz en IIS (// localhost/ES) incluye las páginas comunes, por ejemplo: páginas maestras, el tema, el control del usuario, la carpeta de imágenes . número de subproyectos en la aplicación raíz (// localhost/es/subproyecto). eliminar web.config en subproyectos ensamblar archivos de subproyectos está en la carpeta bin de la aplicación raíz (propiedades del subproyecto >> compilar >> compilación salida ruta: .. \ bin \ mi aplicación es de 3 niveles aplicación web (capa biasness, capa de datos y la capa de presentación. Además, todas las páginas aspx tiene su código detrás de archivo cs)

Configuración de IIS

grupo de aplicaciones de proceso Trabajador de reciclaje después de "1740 en cuestión de minutos" inactivo los procesos de trabajo de tiempo de espera después de estar inactivo "20 en minutos" proceso de trabajo de ping cada "30 segundos"
inicio límite de tiempo para Procesadora trabajador "90 segundos" límite de tiempo Shoutdown para Procesadora trabajador "90 Segundos"

Configuración de la aplicación
caché los archivos ASP limitadas en la memoria "500" archivos ASP limitados

caché en el disco "2000"

Implementación de aplicación:

publico la aplicación web con todos sus archivos a la producción sirven r.

El problema:

la aplicación se ejecuta bastante lento en la primera vez, se tarda 10 segundos hacia arriba para cargar, sin embargo cada a la próxima hora se solicita una página que es más rápido. Creo que la primera vez que se solicita una página, se compila y generalmente lleva más tiempo que la otra solicitud, porque la página está en la memoria caché. La pregunta aquí es ¿por qué tarda tanto tiempo en compilar la página por primera vez?

Los intentos para resolver el problema:

yo tratamos de hacer lo siguiente:

  • Implementación de una copia de los archivos necesarios en el servidor de producción.
  • configuración de IIS cambiado, cambian de espera en inactividad cerrado de proceso de trabajo
  • desactivar el rastreo
  • Apague el estado de sesión
  • Desactivar estado de vista de una página
  • Conjunto de depuración = false en web.config
  • Al crear un subproyecto de hello world en la aplicación raíz, demora 5 segundos.
  • Creando una aplicación web de palabra hello por separado, como arriba, lleva mucho tiempo cargar.
  • Elimina el código en el controlador de eventos page_load, pero no afectó el rendimiento.
  • publicar sólo el archivo necesario de la aplicación de la raíz (sin código escrito en el código detrás), y todos los archivos en el código fuente de sub-proyecto (código está en el código detrás),

Sin embargo, la aplicación aún comienza lentamente pero luego se vuelve más rápida.

Ayúdenos a diagnosticar y resolver este problema.

+0

http://stackoverflow.com/questions/13386471/fixing-slow-initial-load-for-iis –

Respuesta

-4

No hay forma de evitar esto. Siempre obtendrá un ligero retraso en la primera carga a medida que el sitio se compila.

2

publica el sitio web, que precompila, en lugar de copiarlo.

El comportamiento que está experimentando es normal.

5

Además de lo que dice el cielo, podría ejecutar un "script de calentamiento" como el último paso de su proceso de implementación. Aunque esto no acelerará el tiempo necesario para la primera compilación, el uso de dicha secuencia de comandos evitaría al menos que los usuarios vean un inicio lento. un vistazo aquí para ver un ejemplo de una secuencia de comandos: http://programmerramblings.blogspot.com/2008/09/aspnet-site-warmup.html

Otra razón por la primera solicitud para su aplicación es lenta podría ser que IIS tiene que iniciar el proceso de trabajo de asp.net durante la primera petición. Sin embargo, esto no debería afectar las primeras solicitudes a otras páginas.

+0

de inicio automático de aplicaciones web es grande para resolver el La mayor desventaja del rendimiento de la primera página es cargar pero la aplicación no se apagará. mi aplicación incluye muchas páginas, si uso el "inicio automático" o "calentamiento" ¿afectará a la memoria? El calentamiento de dosis afecta negativamente al rendimiento del servidor? ¿Hay alguna desventaja al usar el "script de calentamiento"? – Zahraa

1

que tenían la misma en Ruby on aplicación rieles con pasajeros, pero me pareció una buena herramienta (http://www.wekkars.com) que simplemente impide que el servidor web para ir a dormir.

1

También puede usar la función de inicio automático, que está disponible para las aplicaciones web .net framework 4. Para obtener más información, visite here.

0
VBscript + Dos Batch file... run every 1 hr 


Dim strNewTime , strSiteName 
strNewTime = Now() 
strNewTime = Replace(strNewTime, "/","") 
strNewTime = Replace(strNewTime, " ","") 
strNewTime = Replace(strNewTime, ":","") 

strSiteName = "https://www.yoursite.com/userlogin.aspx?dummytime=" + strNewTime 

Dim oXMLHTTP 
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP.6.0")  

oXMLHTTP.Open "GET", strSiteName, False 
oXMLHTTP.Send 

If oXMLHTTP.Status = 200 Then 
' working 
ELSE 
    CALL SendEmail("!!! www - web site is NOT working... " + strSiteName + " *** ") 
End If 

Set oXMLHTTP = Nothing 
+1

Por favor, agrega comentarios para describir cómo tu respuesta soluciona el problema. – Chrismas007

0

Siempre habrá un ligero retraso en la primera carga de cualquier aplicación .NET debido al componente CLR en la plataforma .NET Framework. Como JIT (Just in Time) que reside dentro de CLR (Runtime Environment para ASP.NET) convierte el lenguaje intermedio (IL) en código máquina nativo, siempre tardará un poco más en la primera ejecución para las aplicaciones .net.

Un video detallado sobre este tema específico se pueden ver en:

https://www.youtube.com/watch?v=ruf4U9_Rbss&index=1&list=PL8598C97BA1D871C1

espero que ayude.

0

Para las aplicaciones asp.net que se ejecutan en IIS 7.0 y versiones menores, escribir un programa de preparación o secuencia de comandos es la mejor manera de evitar los tiempos de espera inactivos del grupo de aplicaciones. Este activador de calentamiento se puede configurar desde la misma aplicación o desde los sitios web o programas externos. Usted puede encontrar diferentes maneras de lograr lo mismo en esta article

Cuestiones relacionadas