2009-03-26 11 views
13

Tengo un servicio WCF (basicHttpBinding) alojado en II7 en Vista que espero manejar muchas solicitudes al mismo tiempo. Estoy intentando cargar la prueba del servicio moviendo 200 hilos en una aplicación de prueba y llamando al servicio WCF. He ejecutado esta aplicación de prueba en la misma máquina que el servidor y en muchas otras computadoras, y siempre obtengo el mismo resultado: no se utilizan más de 5 trabajadores. ¿Es esto un cuello de botella de WCF, HTTP o IIS?¿Por qué WCF limita las conexiones simultáneas a 5?

Respuesta

11

Esta es una función para prevenir el ataque de denegación de servicio. Fuera de la caja, WCF está diseñado para ser seguro. Compruebe el comportamiento del servicio, busque en msdn las configuraciones de maxConcurrentCalls y maxConcurrentSessions. Creo que el límite es 10, pero podría estar equivocado.

+2

Ésta es la respuesta más cercana - si cambiaba maxConcurrentCalls el número de trabajadores WCF refleja activamente ese valor, a una punto. Cualquier cosa por encima de 10 en realidad no ejecuta más de mis trabajadores. Extrañamente, el valor predeterminado es 16 pero no puedo hacer que 16 llamadas estén activas al mismo tiempo. –

+2

El límite predeterminado es 16 no 10. Btw 0x10 es 16 :) –

+0

MS dice que el valor predeterminado para las sesiones es 10 en .NET 3.5, 100xprocesador en 4.0+. http://msdn.microsoft.com/en-us/library/system.servicemodel.description.servicethrottlingbehavior.maxconcurrentsessions(v=vs.90).aspx –

2

WCF es seguro por defecto. Esto significa que la configuración predeterminada limita lo que puede hacer con su servicio WCF para evitar cosas como ataques de denegación de servicio. Esto es ideal para servicios web orientados a Internet, pero a veces puede morderlo. Dependiendo de qué enlaces y comportamientos uses, podría ser una configuración en cualquiera de esos.

Here es una descripción general de estos ajustes: requerirá un poco de experimentación de su parte para determinar qué es exactamente lo que le está picando.

2

No, solo es la configuración de aceleración predeterminada en WCF. Se configura en el elemento serviceThrottling de un comportamiento en el archivo de configuración del servicio, que tiene un atributo maxConcurrentSessions. Valor predeterminado 5, pero puede configurarlo para lo que desee.

5

He aquí un buen artículo sobre WCF Gestión de Instancias de la revista de MSDN por Juval Lowy: http://msdn.microsoft.com/en-us/magazine/cc163590.aspx Emisión de junio de 2006 (en el caso si MSDN a descuartizar sus enlaces de nuevo).

Explica técnicas y configuraciones para administrar el ciclo de vida del servicio (la limitación es una de ellas) y muestra qué configuraciones aplicar para aumentar el número de conexiones concurrentes.

Cuestiones relacionadas