REVISIÓN: Smsvchost.exe para el servicio WCF deja de responder cuando se ejecuta un servicio WCF en.NET Framework 3.0 o 3.5 de.NET Framework


Síntomas


Imagine el siguiente escenario:
  • Ejecutar un servicio de Windows Communication Foundation (WCF) basado en.NET Framework 3.5 o.NET Framework 3.0 de Microsoft.
  • El servicio WCF utiliza el servicio en el uso compartido de puertos Net.Tcp (Smsvchost.exe) y está alojado en un equipo que está ejecutando servicios de Internet Information Server (IIS).
  • Una de las siguientes condiciones es verdadera:
    • El uso de CPU es alto en el equipo que está ejecutando IIS.
    • Un control de acelerador se produce en un modelo de servicio para el servicio WCF.
    • Al mismo tiempo, varias solicitudes se envían al servicio de WCF.
En este escenario, el servicio WCF tiene más de un minuto para procesar una solicitud de una aplicación cliente. Además, se graba un mensaje de error que ensambla la siguiente entrada de evento en el registro de sucesos:

Nombre de registro: sistema

Fuente: SMSvcHost 3.0.0.0

Fecha:

Id. de suceso: 8

Categoría de tarea: Servicio de uso compartido de

Nivel: Error

Palabras clave: clásico

Usuario: Servicio LOCAL

Equipo:

Descripción: Se produjo un error al enviar un socket duplicado: este identificador ahora se pierde en el proceso.

ID: 2620

Fuente: System.ServiceModel.Activation.TcpWorkerProcess

Excepción:

System.TimeoutException: Enviada a la operación de solicitud no recibió una respuesta en el tiempo de espera configurado (00: 01:00). Puede que el tiempo asignado a esta operación han sido una parte de un tiempo de espera. Esto puede ser porque el servicio sigue procesando la operación o porque el servicio no pudo enviar un mensaje de respuesta. Por favor, considere aumentar el tiempo de espera de la operación (convirtiendo al canal/proxy en IContextChannel y estableciendo la propiedad OperationTimeout) y asegúrese de que el servicio es capaz de conectar con el cliente.
Nota: Debe reiniciar IIS para recuperar el servicio WCF de este problema.

Causa


Este problema se produce porque el proceso de Smsvchost.exe el tiempo de espera después de un minuto cuando intenta transferir una solicitud de conexión entrante al proceso de trabajo W3wp.exe. Además, este tiempo de espera es no configurables.

Cuando la CPU tiene una gran carga de trabajo, o cuando muchas solicitudes de conexión concurrente son entrantes, el proceso de Smsvchost.exe no puede transferir la conexión entrante al proceso de trabajo W3wp.exe dentro de un minuto. Por lo tanto, el proceso de Smsvchost.exe el tiempo de espera y finalmente deja de responder. Cuando se produce este problema, el proceso de Smsvchost.exe no puede enrutar las solicitudes posteriores al proceso de trabajo W3wp.exe hasta que se reinicie IIS.

Solución


Para resolver este problema, aplique el hotfix 2504602 que se describe en artículo de Microsoft Knowledge Base (KB).

Para obtener más información, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:
2504602 un paquete acumulativo de revisiones está disponible para WCF en el.NET Framework 3.0 SP2, en.NET Framework 3.5 SP1 y en.NET Framework 4

Estado


Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".