2010-06-18 3 views
5

Hat jemand negative Auswirkungen von einer hohen Anzahl von Service-Instanzen wie 60.000 erlebt oder weiß? Abgesehen vom Speicherverbrauch natürlich.WCF hohe Anzahl von Instanzen: Jeder kennt negative Nebeneffekte?

Ich plane, die Schwelle für die maximal zulässige Anzahl von Instanzen in unseren Produktionsumgebungen zu erhöhen. Ich bin im Grunde satt von schweren Produktionsvorfällen, nur weil "etwas" vergessen hat, einen Proxy ordnungsgemäß zu schließen.

Ich plane, zu etwas wie 60k Instanzen zu gehen, die dem Dienst erlauben werden, Standard-Sitzungszeitlimits zu einem Anruf-Durchschnitt für unsere Klienten zu überleben.

die Drosselung Einstellungen wäre:

  • maxConcurrentCalls = 100
  • MaxConcurrentSessions = 60000
  • maxConcurrentInstances = 60000
  • InstanceContextMode = PerSession

Danke, Alex

Antwort

3

Die standardmäßigen gleichzeitigen Instanzen sind unbegrenzt. 60k machen keinen Unterschied.

Wenn Sie nicht anwenden, um Ihren Dienst Drosselung sind die Standardwerte

•maxConcurrentCalls = 16 
•maxConcurrentSessions = 10 
•maxConcurrentInstances = Unlimited 

Es gibt mehrere Möglichkeiten Drosselung und die Erweiterung der Standardwerte anzuwenden, sondern all das hängt von Ihrem InstanceContext, Concurrency und Session-Modi ? Basierend auf diesen Antworten gibt es optimale Konfigurationseinstellungen, die ich vorschlagen kann.

ich decken einige dieser in meinem Artikel über ESB durch WCF/Trottling Here

UPDATE:

Vielen Dank für Ihre Antwort. Pro Sitzung ist in Ordnung. Es gibt einen guten Artikel zur Optimierung Ihres WCFService Here

Sie empfehlen, Ihre Einstellungen auf etwas mehr als 16 * die Anzahl der CPUs zu ändern. Da Sie pro Sitzung verwenden, sollten Sie Ihre ConcurrentCalls auf 1-3% Ihrer Concurrent Instances festlegen.

Nehmen wir an, Sie haben 8 Kerne in Ihrem Server. Ich würde ein Ausgangspunkt, um die Einstellungen auf einem pro Sitzung Dienst wie so empfehlen:

<serviceThrottling maxConcurrentCalls="6" 
    maxConcurrentInstances="200" 
    maxConcurrentSessions="200"/> 

Dies sollte Ihre Probleme beseitigt w/Kunden-Verbindungen nicht zu schließen, vor allem, wenn Sie gerade den Standardwert von 10 Sitzungen verwenden. Ihr Server sollte in der Lage sein, viel mehr zu handhaben, aber 60k ist wahrscheinlich Overkill. Sie können nach Bedarf testen und erhöhen. Es hängt alles von der Leistung der Box ab und wofür Sie sie sonst noch verwenden.

Basierend auf diesen Einstellungen, wenn Sie weiter wachsen müssen, können Sie die Leistung überwachen und sehen, ob Sie sie erhöhen können. Andernfalls können Sie problemlos auf mehr Server und Lastenausgleich skalieren.

Hoffe das hilft ...Happy Coding

+0

Danke dafür! Mein Instanzmodus ist PerSession und ich würde meine Sitzungsdrossel entsprechend anpassen, um aus der ganzen Geschichte einen Sinn zu ziehen. – Alex

+0

"Wenn Sie weiterwachsen müssen" - Ja, ich muss, weil ein fehlerhafter Client 200 Sitzungen in etwa 20 Sekunden erschöpft, während der SessionIdleManager den Kanal nur alle 10 Minuten bricht, denke ich. "Sie können die Performance überwachen" - genau das wollte ich fragen, wenn jemand Leistungseinbußen etc. mit hohen Instanzzahlen beobachtet hat. – Alex

+0

Klingt, als hätten Sie einige Clients, die Sie deaktivieren müssen. Wenn sie 200 Sitzungen sperren, sperren sie alle Nummern, auf die Sie erhöhen. Ich habe Performance-Tuning für Services durchgeführt, aber ohne zu wissen, was Ihre Umgebung ist, kann ich Ihnen nicht die optimalen Zahlen geben. Wenn es ein leistungsfähiger Server ist und nichts anderes Ressourcen benötigt, dann können Sie es bis zum Maximum aufstocken. Tut mir leid, ich habe versucht, einem Mann beizubringen, zu fischen. – CkH

Verwandte Themen