Pregunta

Tengo un servicio de WCF desplegado en una aplicación de consola con basicHttpBinding y SSL habilitado. El atributo siguiente se establece así:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

También he creado el comportamiento de estrangulación a

<serviceThrottling maxConcurrentCalls="2147483647" maxConcurrentSessions="2147483647"
        maxConcurrentInstances="2147483647" />

Por otro lado he creado un cliente de prueba (para prueba de carga) que inicia simultáneamente a varios clientes (múltiples hilos) y realiza transacciones en el servidor. Todo parece estar bien, pero en el servidor de la utilización de la CPU no aumenta por lo que agregó un poco de registro para ver el número de llamadas simultáneas al servidor y se encontró que nunca fue superior al 6.

He revisado el código del contador registro de rendimiento más de dos veces y parece bien a mí.

Así que quiero preguntar dónde está el problema en esta situación? No he especificado ningún tipo de ContextMode o ConcurrencyMode todavía.

Después de este post me di cuenta de que cada vez que empiezo otra intance del cliente de prueba mi concurrente servidor llama contador de aumentar a 2 como si estoy funcionando a sólo 1 caso la máxima concurrente LlamRecib será 2 y si hay dos instancias del mismo valor pasa a 4 y así sucesivamente. ¿Hay algún límite del número de llamadas de WCF vez proceso?

******** ******** Añadido el 17 de marzo

Hoy me encontré con otra prueba con un cliente de prueba (con 50 usuarios simultáneos) en la misma máquina en la que se ejecuta el servidor. Esta vez me estoy haciendo el resultado exacto de lo que quería que se muestre (es decir, llamadas simultáneas máximas RCVD por Servidor = 50).

Pero tengo que hacer lo mismo en otras máquinas también. Alguien me puede ayudar en esto?

¿Fue útil?

Solución 2

he encontrado una solución: hay un límite de conexión en ServicePointManager que estaba causando este problema. Para eliminar este límite sólo tiene que ajustar

System.Net.ServicePointManager.DefaultConnectionLimit = X;

donde el límite predeterminado es 2.

Otros consejos

O utilice esta configuración en el cliente.

<system.net>
    <connectionManagement>
      <add maxconnection = "200" address ="*" />
    </connectionManagement>
  </system.net>

A continuación, 200 es el límite del cliente

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top