corresponds application iis iis-7 application-pool w3wp

iis - application - w3wp.exe windows server 2012 r2



IIS7: aplicación de error w3wp.exe, ¿cuál es la causa raíz de estos bloqueos? (4)

"O BOF o EOF es verdadero o el registro actual se ha eliminado" significa que la tabla está vacía y usted está intentando hacer un MoveNext. Así que revisa eof antes de hacer cualquier movimiento .

IIS es notorio por lanzar errores de kernel en w3wp.exe como este. Todos sus errores en el estado de la sesión son solo síntomas del proceso bloqueado. Múltiples grupos de aplicaciones no servirán de mucho; simplemente difunden el error.

Apostaría a que es un bloqueo de SQL debido a su entorno de usuario cambiante. Esto causará un retraso de 10 segundos ya que SQL intenta determinar qué consulta eliminar. Uno gana, uno pierde. El perdedor obtiene un puntero a una mesa inesperadamente vacía y usted intenta un movimiento y un colapso posterior. Tal vez podría apuntar su base de datos a una conexión ODBC y activar el rastreo, o encontrar la manera de hacer que SQL inicie sesión.

Tenía todos los mismos síntomas que los de arriba en Perl. Pude crear un wrapper fn () para hacer todas las consultas SQL y registrar todos los sql, + params y cualquier error en el disco para rastrear el problema. Fueron interbloqueos, luego pudimos codificar en reintento automático y, finalmente, recodificamos el orden de las consultas y las columnas escaneadas para eliminar los interbloqueos.

Nuestro sitio web está en .NET pero también contiene algunas antiguas bibliotecas ASP y 32bits. Había estado funcionando bien por un tiempo (2 años). Pero durante el último mes, hemos visto el siguiente error en nuestro servidor IIS7, que no hemos podido rastrear y corregir:

"Aplicación de error w3wp.exe, versión 7.0.6001.18000, marca de tiempo 0x47919413, módulo de fallas kernel32.dll, versión 6.0.6001.18215, marca de tiempo 0x4995344f, código de excepción 0xe053534f, error de compensación 0x0002f328, id. De proceso 0x% 9, tiempo de inicio de la aplicación 0x% 10. "

Podemos reproducir el error:

  • Una de nuestras páginas .ASPX comienza a cargar, ejecutar código y consultas (tenemos response.flush () en toda la página para rastrear dónde se rompe el código), luego se detiene de repente y obtenemos el error anterior en IIS.

  • La página deja de cargarse y, sin response.flush (), no está redirigiendo a nuestra página error.aspx (como se configuró en web.config)

  • El error NO ocurre todo el tiempo. A veces, ocurre 3 veces seguidas, luego funciona bien durante 15 minutos sin parar con una redirección adecuada a error.aspx.

  • El error que obtenemos entonces es un clásico: "O bien BOF o EOF es verdadero o el registro actual se ha eliminado".

  • Cuando se produce el error, la página se cuelga y todas las demás sesiones en la misma computadora desde cualquier navegador tienen páginas web colgadas (por cierto, solo permitimos 1 proceso de trabajo mientras estamos probando). Desde otras computadoras, el sitio carga bien.

  • Puedo reciclar el grupo de aplicaciones, matar w3wp.exe, reiniciar IIS. Nada servirá. La única forma de volver a cargar correctamente la página es reiniciar MS SQL que maneja nuestros estados de sesión. No sé por qué ocurre esto, pero supusimos que las cookies de sesión en los navegadores de los usuarios apuntan a un hilo que no finalizó correctamente (debido al bloqueo anterior) e IIS está esperando que termine para procesar más código (? ) Si alguien puede explicar esto mejor, sería realmente útil. ¿Hay un tiempo de espera que podemos configurar para "terminar" los hilos? ¿Es un problema relacionado con MS SQL?

También he analizado los usos de la memoria privada y virtual, porque creo que nuestro código no es el más efectivo y estoy seguro de que tenemos pérdidas de memoria. Sin embargo, vi que la página se bloqueaba a pesar de que tanto las memorias privadas como las virtuales todavía eran bastante bajas (menos de 100 MB cada una).

He utilizado Debug Diag y WinDbg como se indica aquí: http://blogs.msdn.com/b/tess/archive/2009/03/20/debugging-a-net-crash-with-rules-in-debug-diag .aspx , pero no podemos hacer que windbg funcione, esto es lo que estamos tratando de hacer en este momento.

Si alguien pudiera ayudarnos o apuntarnos en la dirección correcta, sería realmente genial, gracias.


Comenzamos a recibir este error después de instalar las actualizaciones de Windows en una máquina con Windows Server 2008R2. Windows Process Activation Service (WAS) instala algunos enlaces de sitios adicionales que causaron problemas para nuestra configuración.

Eliminamos las vinculaciones net.tcp, net.pipe, net.msmq y msmq.formatname de nuestro sitio web y ya no recibimos la excepción de la aplicación de fallas.


Es muy posible que uno de los ensamblados referenciados / vinculados en algún lugar se haya dañado al azar (puede suceder) en el disco. ¿Puedes intentar replicar el problema en una máquina nueva y limpia con las mismas estadísticas, nuevas instalaciones de los últimos controladores xyz que estás usando?

Resolví un misterioso problema que me llevó meses aislarme de esta manera. Parecía limpio, las nuevas máquinas con las mismas especificaciones y los controladores requeridos funcionarían muy bien: solo algunas máquinas antiguas con las mismas especificaciones fallaban constantemente. Terminé desinstalando todo (IIS, ASP.NET, .NET, base de datos y cliente) y comencé desde cero. La causa final cuando lo aislé fue que el controlador del cliente db estaba corrupto en las máquinas más antiguas (y todas las máquinas más antiguas eran clones una de la otra, así que supongo que fueron clonadas después de que ocurriera la corrupción), y parecía estar jugando con el espacio de memoria .NET incluso cuando no estaba llamando directamente. Todavía tengo que responder a mi mensaje de "Ayúdame a depurar este monstruo" con esta respuesta porque dudaba que alguna vez ayudara a nadie.


Este es probablemente un caso extremo, pero por si acaso alguien viene aquí y está usando MVCMailer , estaba obteniendo el mismo error debido al método .SendAsync () en los programas publicitarios.

Los cambié todos a .Send () y se detuvo el bloqueo.

Vea esta respuesta SO para ver cómo utilizar el correo asincrónico y evitar el bloqueo (supuestamente, no lo implementé personalmente)