Aplicación IIS7 ASP.NET: 2 aplicaciones idénticas en 2 grupos de aplicaciones idénticas, 1 responde y 1 no

12

Tengo una aplicación web ASP.NET (v4.0) que está instalada en un directorio virtual (como una aplicación) y está alojada en su propio grupo de aplicaciones. Esto se repite para cada instancia de la aplicación (es decir, por cliente).

Los grupos de aplicaciones están en modo integrado (no clásico) y LoadUserProfile se establece en verdadero. De lo contrario, la configuración predeterminada.

Cada instancia actualmente tiene su propia copia del código / configuración y su propia carpeta de datos (lectura / escritura de archivos básicos).

1 instancia de esta aplicación funciona bien (la operación utilizada para la comparación lleva ~ 4 segundos). Cada otra instancia se ejecuta lentamente (de 10 a 25 segundos para la misma operación).

Si muevo la instancia más lenta al grupo de aplicaciones "más rápido", esa instancia cobra vida. Si muevo la instancia más rápida al grupo de aplicaciones más lento, esa instancia se ralentiza a un rastreo.

Los grupos de aplicaciones se crearon de la misma manera inicialmente: manualmente. Más tarde utilicé la rutina de copia de PowerShell para garantizar una copia exacta del grupo de aplicaciones más rápido y aún el mismo comportamiento. La comparación de los archivos apppool.config muestra que son idénticos, salvo las asignaciones de directorio virtual.

No hay recursos compartidos que se estén bloqueando, por lo que puedo decir, y lo probé cerrando el grupo de aplicaciones y reiniciando ... lento sigue siendo lento, y luego cuando reinicio ese grupo de aplicaciones (por lo que está cargado último) es aún más rápido ...


fuente
¿Y las carpetas de la aplicación son idénticas en bytes?
usr
Sí, solo verifiqué tres veces, pero la única diferencia está en web.config, donde especifica el nombre del directorio virtual en el que se aloja (y verifiqué también que esa era la única diferencia) Todos los demás archivos son idénticos a bytes. .
¿Qué está haciendo la aplicación que tarda más en un grupo de aplicaciones? ¿Puede adjuntar VS y pausar el depurador para perfilarlo?
usr
No tengo VS instalado en el servidor ya que es un sistema de producción, pero parece que es mi próxima parada. Estoy a medio camino de agregar registros masivamente detallados a los componentes de acceso a datos y acceso a archivos, ya que el rastreo que hemos mostrado no ha mostrado nada específico todavía. Obtendré algunas estadísticas más y las agregaré CUANTO ANTES. Estaba optimista de que alguien podría haber encontrado algo similar para poder evitar ese camino
1
Como está cargando el perfil de usuario, esa parece ser la diferencia clave entre esos grupos de aplicaciones. Compruebe las ubicaciones temporales de esos usuarios, los permisos de escritura de archivos allí y, si se conecta a una base de datos con el mismo usuario, compruebe también los permisos en la base de datos. Todo lo que se necesita es que se agote el tiempo de espera de una consulta para ese usuario, así que pruebe con el mismo DB si es posible. ¡Buena suerte!

Respuestas:

1

Para aislar aún más el problema, sugeriría ejecutar Wireshark (u otro analizador de paquetes de elección) en el sistema host, durante dos sesiones. Supongo que estoy haciendo que cada grupo de aplicaciones tiene una IP única asignada o un puerto único.

Primero obtenga su rendimiento de referencia mediante el filtrado en el puerto IP: de su grupo de aplicaciones rápidas. Vea cómo se ve el tráfico hacia y desde la aplicación en condiciones "normales".

La segunda ejecución, deberá capturar el tráfico del grupo de aplicaciones lento / que no responde. Si todo el enrutamiento de la red y tal es correcto hasta el cuadro, debería ver las solicitudes repetidas en una dirección, muy probablemente a la aplicación desde otro lugar, PERO si su aplicación es algo que hace muchas solicitudes a otro servidor, su tráfico puede ser pesado en egreso en lugar de ingreso.

Esta prueba le dirá si el problema está dentro de la aplicación, o si se trata de problemas relacionados con TCP / IP que provocan que las solicitudes a la aplicación excedan el tiempo de espera debido a la falta de comunicación.

Correlacione las marcas de tiempo de sus pruebas con los registros de eventos del servidor y (si corresponde) los registros de seguimiento de seguimiento, y debería poder concentrarse en el problema.

George Erhard
fuente
0

El seguimiento de solicitudes fallidas (FRT) será su mejor herramienta para rastrear esto. Mostrará la tubería y cuánto tiempo tomó completar cada paso. Eso debería señalar si es algo dentro de la porción asp.net o si es algo dentro de la tubería de IIS.

Para configurar FRT, desde IIS a nivel de sitio, cree una regla FRT con un rango de estado http de 200-999 y asegúrese de habilitar FRT (es un paso separado del panel de acciones).

Luego reproduzca el problema y mire los archivos generados (% SystemDrive% \ inetpub \ logs \ FailedReqLogFiles \ w3svc {siteid}). Ábrelos en Internet Explorer.

Scott Forsyth - MVP
fuente
0

Cuando IIS se demora por largos períodos de tiempo sin razón aparente, generalmente significa que está esperando que se agote el tiempo de espera de un servicio externo. Cuando lo hace, entonces intenta otro enfoque. De hecho, esto es cierto para casi cualquier cosa en Windows o Linux. El primer sospechoso para mí en estas situaciones es siempre la configuración de resolución de nombre de red. Es culpable hasta que se demuestre su inocencia.

¿Se puede recrear esto con un usuario accediendo a uno de los sitios duplicados? Sería bueno saber qué hacen la CPU y los discos cuando recrea el tiempo de respuesta de 10 a 20 segundos. Si parece que no sucede mucho durante los 10-20 segundos, entonces debe verificar sus nombres vinculantes y la resolución de nombres para los nombres vinculados. Si la CPU o los discos están masticando, entonces deberá averiguar qué proceso está trabajando demasiado y por qué.

Por favor publique sus hallazgos, tengo curiosidad.

PD: También verificaría la resolución de nombres y el acceso a cualquier servicio de autenticación que pueda estar en juego. Por ejemplo, si es necesario consultar el servidor de dominio, asegúrese de que el primer servidor DNS de su lista sea el servidor DNS para el dominio.

BigTFromAZ
fuente
0

Esta no es la solución, pero trabajaremos para lograrlo;

  1. Ejecute IISRESET (durante las horas de mantenimiento) o elimine el W3WP que pertenece al grupo de aplicaciones que no responde

  2. Iniciar la aplicacion

  3. Si bien no responde, tome un archivo de volcado de W3WP que pertenezca al grupo de aplicaciones lentas. Utilice el explorador de procesos o el administrador de tareas para crear un archivo de volcado

  4. Tome el mscordacwks.dll y mscorwks.dll desde C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.XXXXX

  5. Comprima y cargue estos archivos en algún lugar desde donde pueda descargarlos.

G33kKahuna
fuente