Question

J'ai un service WCF déployé dans une application console avec BasicHttpBinding et SSL activé. L'attribut suivant est défini ainsi:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

J'ai aussi définir le comportement d'étranglement à

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

D'autre part, j'ai créé un client de test (pour le test de charge) qui initie plusieurs clients simultanément (plusieurs threads) et effectue des transactions sur le serveur. Tout semble bien, mais sur le serveur l'utilisation du processeur n'augmente pas j'ai ajouté l'enregistrement pour afficher le nombre d'appels simultanés au serveur et a constaté qu'il n'a jamais été plus de 6.

J'ai examiné le code contre-performance de l'exploitation forestière plus de deux fois et il semble bien pour moi.

Je veux demander où est le problème dans cette situation? Je ne l'ai pas précisé tout type de ContextMode ou ConcurrencyMode encore.

Après ce post, je remarqué que chaque fois que je commence une autre intance de test client mon concurrent serveur appelle augmenter compteur à 2 comme si je cours seulement 1 instance la concurrente Rcvd appels maximum sera 2 et s'il y a deux cas la même valeur va à 4 et ainsi de suite. Y at-il une limite du nombre d'appels WCF d'une fois processus?

******** ******** Ajoutée le 17 mars

Aujourd'hui, je courais un autre test avec un client de test (avec 50 utilisateurs simultanés) sur la même machine sur laquelle le serveur est en cours d'exécution. Cette fois, je reçois le résultat exact ce que je voulais montrer (à savoir appels simultanés maximum rcvd par serveur = 50).

Mais je dois le faire la même chose sur les autres machines aussi bien. Quelqu'un peut-il me aider à ce sujet?

Était-ce utile?

La solution 2

J'ai trouvé une solution: il y a une limite de connexion sur ServicePointManager qui a été à l'origine de ce problème. Pour supprimer cette limite, vous avez juste besoin de régler

System.Net.ServicePointManager.DefaultConnectionLimit = X;

où la limite par défaut est 2.

Autres conseils

Ou utiliser cette configuration dans le client.

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

Voici 200 est la limite du client

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top