Frage

Ich habe einen WCF-Dienst in einer Konsolenanwendung mit Basichttpbinding und SSL zum Einsatz freigegeben. Das folgende Attribut wird auch:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

Ich habe auch die Drosselungsverhalten

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

Auf der anderen Seite habe ich ein Test-Client erstellt (für Belastungstest), dass Eingeweihte mehrere Clients gleichzeitig (mehrere Threads) und führen Transaktionen auf dem Server. Alles scheint in Ordnung, aber auf dem Server die CPU-Auslastung steigt nicht so dass ich einige Protokollierung hinzugefügt, um die Anzahl der gleichzeitigen Anrufe an den Server zu betrachten und festgestellt, dass es nie mehr als 6 ging.

Ich habe den Leistungsindikatoren Logging-Code mehr als doppelt überprüft und es scheint gut zu mir.

So möchte ich fragen, wo ist das Problem in dieser Situation? Ich habe keine Art von ContextMode oder ConcurrencyMode noch angegeben.

Nach diesem Beitrag Ich habe bemerkt, dass, wenn ich einen anderen Intance von Test-Client starten meine gleichzeitige Server Anrufe Zähler Anstieg auf 2 wie wenn mir läuft nur 1 Instanz die maximale Anzahl gleichzeitiger rcvd Anrufe werden 2 sein und wenn es zwei Instanz den gleichen Wert geht bis 4 und so weiter. Gibt es eine Begrenzung der Anzahl der WCF Anrufe von einmal Prozess?

******** Hinzugefügt am 17. März ********

lief Heute habe ich einen weiteren Test mit einem Test-Client (mit 50 Concurrent User) auf der gleichen Maschine, auf der der Server läuft. Dieses Mal ist mir das genaue Ergebnis zu bekommen, was ich wollte (gleichzeitige Anrufe heißt Maximum rcvd durch Server = 50) zeigen.

Aber ich brauche es die gleichen wie auch auf anderen Maschinen zu tun. Kann jemand mir helfen, auf das?

War es hilfreich?

Lösung 2

Ich fand eine Lösung: Es gibt eine Verbindungslimit auf Servicepoint, die dieses Problem verursacht wurde. Um diese Grenze zu entfernen müssen Sie nur Satz

System.Net.ServicePointManager.DefaultConnectionLimit = X;

, wo das Standardlimit ist 2.

Andere Tipps

Nutzen Sie diese Konfiguration in dem Client.

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

Hier 200 ist die Grenze vom Client

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top