2011-09-06 21 views
5

Tenemos un servicio WCF net.tcp en el sitio de mucho tráfico. http://www.artedelcorpo.com/Límites de conexión WCF

Funciona muy bien durante un tiempo, luego se detiene y devuelve un error de tiempo de espera. Cuando reinicio IIS, se ejecuta de nuevo.

¿Por qué? ¿Hay un límite en las conexiones?

+1

La ejecución de un seguimiento de WCF podría proporcionar alguna información. –

+1

El error es: "System.Net.Sockets.SocketException (0x80004005): la operación de E/S se ha cancelado debido a una salida de subproceso o una solicitud de solicitud" – user758977

Respuesta

9

Hay una configuración predeterminada de 10 conexiones para el enlace NetTcp. Puede aumentar esto en la sección <binding> de su configuración. Lo mismo ocurre con los tiempos de espera: el valor predeterminado es 1 minuto, pero también puede ajustar el tiempo de espera de cierre, el tiempo de espera abierto, el tiempo de espera de recepción y el tiempo de espera de envío.

<system.serviceModel> 
    <bindings> 
     <netTcpBinding> 
      <binding name="MyNetTcpBinding" closeTimeout="00:05:00" 
        openTimeout="00:05:00" receiveTimeout="00:05:00" 
        sendTimeout="00:05:00" maxConnections="100" /> 
     <netTcpBinding> 
    </bindings> 
</system.serviceModel> 

La muestra anterior fijará los tiempos de espera a 5 minutos y las conexiones max a 100.

Ver <netTcpBinding> para más detalles/información.

+0

Gracias por la respuesta. Configuré un tiempo de espera de 10 minutos y 1000 conexiones. Tenemos alrededor de 7000 visitantes únicos por día. – user758977

5

El aumento de los tiempos de espera de la red le permite obtener tiempo para procesar la solicitud. Esto puede ayudarlo a sobrevivir una ráfaga breve de alto tráfico, pero no cambia el rendimiento de su sistema.

Si su hardware todavía tiene algo de espacio libre en términos de memoria y CPU cuando se producen estos problemas, debería considerar cambiar los aceleradores de simultaneidad. Esto permitirá que se procesen más solicitudes en paralelo. El default throttle values in .NET 3.5 es realmente bastante conservador y esto podría ser una solución rápida (según la arquitectura de su servicio).

Aquí hay algunos buenos ejemplos de configuración de WCF service throttles.

Si su hardware está al máximo y todavía está recibiendo tiempos de espera, es probable que sea hora de agrupar el servicio y agregar otro nodo.

Cuestiones relacionadas