2016-07-10 4 views
0

Ich habe eine WCF-Anwendung mit zwei Endpunkten und fünf Web-Services. Um meine WCF-Anwendung zu authentifizieren, wird ein Anruf an einen anderen Webdienst gesendet. Nach der Authentifizierung ruft meine Anwendung je nach Art der Anfrage einen anderen Webservice auf. Das Problem ist, dass meine WCF-Anwendung für jede eingehende Anforderung mindestens zwei verschiedene Webdienste aufruft. Die Anzahl der eingehenden Anfragen hat sich in letzter Zeit erhöht und der Benutzer erhielt einen Fehler Timeout. Meine CPU-Auslastung Gerste erreichte 10%. Ich habe das Attribut maxconnection in meinen Webdiensten erhöht.Erhöhen Sie die maximale Anzahl der ausgehenden Anfragen in WCF-Anwendung

Ich habe meine Endpunkte auf zwei Websites getrennt. Es erhöhte den zu verarbeitenden Durchsatz (und löste fast das Timeout Problem). Ich schätze jedoch, dass die ausgehenden Anfragen auf IIS für jede Website begrenzt sind. Wenn es gibt, was ist es und wie kann ich es erhöhen?

Hinweis: Ich habe ein anderes Problem here und ich denke, diese beiden Probleme von einer Sache stammen.

+0

Haben Sie festgestellt, was der Engpass eigentlich ist? – stuartd

+0

ja. Wie ich bereits erwähnt habe, ist die Anzahl der ausgehenden Anfragen für jede Website begrenzt. eher sehe ich keinen anderen Grund. – David

+1

Haben Sie sich den '[ConcurrencyMode] (https://msdn.microsoft.com/en-us/library/system.servicemodel.concurrencymode (v = vs.110) .aspx)' Ihres Dienstes angesehen? Vielleicht behandeln Sie die Kundenanrufe nacheinander? –

Antwort

2

Möglicherweise können Sie den ConcurrencyMode Ihres WCF-Dienstes ändern. Fügen Sie das Attribut einfach Ihrem Dienstverhalten hinzu. Sie müssen sicherstellen, dass Ihr Code threadsicher ist, da dies Ihre Anwendung zu einem Multi-Threading macht.

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)] 
public class MyService : IMyService 
{ 
    // Implementation 
}