2010-11-18 11 views
8

Wir haben eine Seite, die eine Anfrage an einen Webservice der dritten Partei stellt. Bei starker Belastung verlängert sich diese Reaktionszeit erheblich, jedoch meldet die 3. Partei, dass dort die Zeiten für die Verarbeitung konstant bleiben. Dort zeigen Timings, dass von dem Zeitpunkt, an dem sie eine Anfrage erhalten, bis zu dem Zeitpunkt, zu dem sie es zurücksenden, immer etwa 1,5-2,0 Sekunden sind. Jetzt haben wir Wartezeiten von mehr als 20 Sekunden. Mein Verständnis von ASP.NET ist, dass jede Anfrage auf einem IIS-Thread-Pool-Thread ausgeführt wird und die Anforderung an den 3rd Party Service zurückgeben und verarbeiten. Also verstehe ich nicht wirklich, was unser Ende blockieren könnte. Gibt es etwas, was ich vermisse? Gibt es jenseits von IIS einen Schwellenwert, der blockiert?Mehrere Aufrufe derselben Web-Service-Blockierung?

Wenn ich etwas vermisse, wäre eine Buchempfehlung, die dieses Thema behandelt, auch eine sehr willkommene Ergänzung zu jeder Antwort.

+0

tut die Seite macht die Anfrage von der Client-Seite oder Server-Seite? –

+0

Es macht die Anfrage von der Server-Seite, wäre das wichtig? :) –

+0

+1 gute Frage – PRR

Antwort

9

.NET limits erzwingt ein Limit von 2 konkurrierenden Webanforderungen an einen einzelnen Host, wie von der HTTP-Spezifikation vorgeschlagen. In Ihrem Fall benötigt also nicht der Webdienst mehr Zeit für die Ausführung, sondern Ihre Anwendung verzögert die Anforderungen, um innerhalb dieser Einschränkung zu bleiben.

Sie die Grenze für den Webdienst, indem Sie diesen Schlüssel zu Ihrer Konfigurationsdatei erhöhen können:

<system.net> 
    <connectionManagement> 
     <!-- specific servers... --> 
     <add address="http://example.org" maxconnection="20" /> 

     <!-- ...or any server --> 
     <add address="*" maxconnection="8" /> 
    </connectionManagement> 
    </system.net> 
+0

Dies wäre nur der Fall, wenn der gleiche Thread auf der Serverseite die Anfragen stellt. Wenn es mehrere Benutzer gibt, also mehrere asp.net-Sitzungen, wären sie jeweils in ihrem eigenen Thread und hätten diese Einschränkungen nicht. Recht? –

+0

@Mike, das ist nicht wahr. Das Limit betrifft alle Threads im Prozess, im Fall von ASP.NET sogar unterschiedliche Anwendungen, die im selben Anwendungspool ausgeführt werden. – realMarkusSchmidt

+0

wow, wusste das nicht. –

Verwandte Themen