2012-08-30 25 views
6

Entorno: Windows Server 2003; IIS 6, ASP.NET 2.0.50727iis retraso de inicio con páginas aspx

Me estoy volviendo loco con un nuevo servidor web que hemos configurado (tenga en cuenta que este problema no ocurre en nuestros otros servidores web que tienen la misma configuración). Al cargar y la aplicación asp.net la primera vez, la página se cuelga durante más de un minuto completo antes de mostrar la página en el navegador. Después de cargar la primera página, todo se ejecuta muy rápido.

Nota 1: Probablemente diga que la aplicación se está compilando por primera vez. Pero he descartado eso. Pongo mensajes de rastreo en todas partes en la aplicación y todos los mensajes de rastreo se ejecutan en un segundo después de solicitar la página. Por lo tanto, la aplicación se compila y se ejecuta de inmediato. Pero cuando la aplicación termina de renderizar la página y se imprime mi último mensaje de seguimiento, no pasa nada. IIS está haciendo algo entre bastidores durante un minuto completo antes de transferir la página terminada junto a http al navegador del usuario.

Nota 2: descubrimos que después de tocar la aplicación la primera vez y todo funciona bien, si esperamos una hora, obtenemos la demora nuevamente. Por lo tanto, IIS tiene algo en su memoria caché que se borra después de una hora y hace que nuestro sitio se estanque nuevamente.

Nota 3: Entre cada prueba dejamos/iniciamos IIS para forzarlo a colgar al cargar la aplicación.

Nota 4: Observamos el Administrador de tareas para ver si IIS estaba aumentando y ocupando muchos recursos procesando algo. Pero eso no fue todo. Vimos un pico muy rápido al 50% inmediatamente antes de que el navegador mostrara la página, pero durante los 60 segundos anteriores solo había un 1% de uso en el servidor.

Nota 5: En otra prueba, creé una página HelloWorld.html y esto no causa que IIS se bloquee. Por lo tanto, tiene algo que ver con llamar a la biblioteca ASP.NET la primera vez que envía una página renderizada a través de http. Además, dado que la aplicación ya se ha compilado y se ejecuta al instante, es solo la parte de asp.net que envía la página representada al navegador del usuario que causa la demora.

¿Alguna idea? Somos una pérdida aquí. Todos nuestros otros servidores web están configurados de la misma manera y funcionan bien, pero esta es una nueva instalación. Entonces, ¿debe haber una configuración de configuración que se haya perdido o quizás deba instalarse algo?

Gracias,

Brian

+0

¿Lees en el visor de eventos cualquier error de asp.net? Debe tener al menos algunos eventos de tiempo de espera y conexiones cercanas de los clientes que eliminan los hilos. – Aristos

+0

Miramos el visor de eventos pero no vimos nada. Voy a hacer más pruebas y verlo de nuevo. Además, este servidor no tiene tráfico a excepción de nuestras pruebas. Entonces, no hay clientes que eliminen hilos o algo así. Solo nosotros haciendo solicitudes de página simples y viendo es hang. – user441058

+0

El otro problema puede ser un restablecimiento rápido del grupo, puede tener una configuración similar, pero los grupos pueden ser diferentes en la configuración. Échales un vistazo si hiciste un reinicio de ellos, por ejemplo, en el caso de la memoria, o demasiado rápido, etc. – Aristos

Respuesta

0

podría haber algunos ajustes Aspnet.config en esta caja que son diferentes de los demás. ¿Has intentado copiar sobre sus archivos de configuración a este servidor? Parece que hay opciones de certificado, junto con las modificaciones del registro que usted puede hacer para eliminar algún tiempo de retraso durante la carga inicial de una página (Precompilar lado)

Ver here y here

+0

los archivos aspnet.config son idénticos (y bastante simples). [Code] [/ code] – user441058

1

Si usted tiene acceso a los servidores, a continuación, asegúrese de que el reciclaje grupo de aplicación es en realidad conectado a los registros de sucesos

cscript adsutil.vbs get w3svc/AppPools/DefaultAppPool/LogEventOnRecycle

se puede configurar para registrar todo con cscript adsutil.vbs set w 3svc/AppPools/DefaultAppPool/LogEventOnRecycle 255

See more here

A continuación, comprobar si había algún recicla.

La inicialización de la aplicación, la creación del proceso de trabajo, los hilos, cargar el dominio de la aplicación y todas las referencias dll's pueden llevar algo de tiempo, eso es normal, pero esa demora de 1 minuto es otra cosa.

Trate de precompilar la aplicación en el servidor y ver si eso ayuda aspnet_compiler -m/LM/W3SVC/[site id]/Raíz/[su nombreaplic]

Si quiere conocer en profundidad, que puede verifica el evento ETW.

  1. proveedores de consulta logman
  2. GUID relacionados
  3. Guardar la /ASP.NET IIS en un archivo como iisproviders.txt
  4. logman empezar ExampleTrace -pf iisproviders.txt -ets -rt
  5. reproducir
  6. LogParser "SELECT * FROM ExampleTrace" -i: ETW
  7. logman parada ExampleTrace -ets

Puede encontrar más aquí Troubleshooting appdomain restarts and other issues with ETW tracing

También verificaría el w3wp.exe con procexp si tiene un tiempo de espera de conexión TCP o con Procmon para otras pistas.

Si usted tiene experiencia con windbg, entonces puede presentar una solicitud a la aplicación a continuación, coloque rápidamente el depurador al proceso

windbg -p [process id of the app pool] 
.loadby sos mscorwks 
g 

y tomar desde allí. Si hay excepciones, bloqueo de proceso, etc., debería poder atraparlo ...

Una vez que tuvimos un problema de servidor extraño como este y una reinstalación .NET resolvió el problema, todavía no estoy seguro de cuál fue el culpable.

0

Una cosa que es posible que desee verificar es si hay algún acceso a la base de datos en la carga de su página. Eso podría estar bloqueando la creación de la página durante la carga de la página inicial. Luego, cuando la consulta se almacena en caché (ya sea por el motor de db u otro mecanismo de caché como memcached), las cargas de página posteriores funcionan normalmente.

Según su último comentario,

pude arranque/parada de IIS varias veces y la aplicación siempre corrió al instante. Pensé que estaba arreglado para siempre. Pero ahora lo intenté de nuevo (ha estado inactivo durante las últimas horas) y ahora está de nuevo en suspenso en la primera solicitud.

Esto podría significar que la memoria caché ha expirado y, por lo tanto, debe golpear la base de datos una vez más, lo que provoca el retraso en la carga de la página.

Cuestiones relacionadas