Einfache WCF-Aufrufe brauchen viel Zeit

8

Ich erstelle eine WCF-Server-Client-Anwendung. In meinem ersten Test benötigt ein einfacher Aufruf (die Methode im Grunde nur return true; ) viel Zeit (~ 5 Sekunden)

Ich habe versucht, es zu verfolgen, und hier ist ein Screenshot der Anrufverfolgung

Wie Sie zwischen den Zeilen 2 und 3 sehen können, dauert es 5 Sekunden (obwohl ich ehrlich gesagt nicht weiß, was Zeile 2 und 3 bedeuten)

Bei der Konfiguration des Clients (des Aufrufers) ist die Bindung wie diese (meistens von Visual Studio generiert) %Vor%

und auf dem Server

%Vor%

Und wie ich es so nenne

%Vor%

Hinweis: Bei diesem Test befinden sich sowohl der Server als auch der Client auf demselben Computer, sodass es sich nicht um ein Netzwerkproblem handeln kann. Irgendeine Idee, was die Langsamkeit verursacht oder wie ich weitere Informationen finden kann, um dies zu beheben?

    
Louis Rhys 04.06.2012, 05:37
quelle

3 Antworten

1

Die Anwendungslebensdauer ist in Ihrem Post nicht angegeben. Ich gehe davon aus, dass Sie die Client-App starten und den WCF-Dienst zum ersten Mal aufrufen, ohne ihn aufzuwärmen.

Timing wird in diesem Fall Sinn machen.

.NET führt viele versteckte Arbeiten durch, um ChannelFactory und Server zu initialisieren, wenn es trotz der Verwendung von Lightweight Binding und Message nicht aufgewärmt wurde.

Das ist Natur der WCF und sollte nicht viele Probleme verursachen, weil die Kommunikation nach dem Aufwärmen wirklich schnell ist.

Versuchen Sie, Ihren Dienst in einer App-Sitzung zweimal hintereinander zu rufen, um die Zeit für beide Anrufe zu messen. Wenn beide Anrufe vergleichbare Zeit benötigen, ist meine Annahme falsch.

Falls Sie meine Frage sehen und die Umgebung vergleichen möchten -

Warum wird der erste WCF-Client-Anruf langsam ausgeführt?

    
Dmitry Harnitski 05.06.2012 02:12
quelle
0

Um weitere Informationen zu erhalten, können Sie Event Tracing für Windows (ETW) mit dem Tool Perfmonitor nutzen die Codeplex-Site des BCL-Teams. Eine der vielen Funktionen dieses Tools besteht darin, dass es den Anweisungszeiger jede Millisekunde abtasten kann und Ihnen den verwalteten Aufruf-Stack für jede Stichprobe zur Verfügung stellt. Dies kann Ihnen einen Hinweis darauf geben, was der Code in diesen Zeitabständen tut.

ps. Hier ist ein weiterer Link zu Artikeln, die dieses Tool verwenden: Ссылка

    
Marc Sherman 04.06.2012 14:41
quelle
0

Versuchen Sie, die Protokollierung der WCF-Ablaufverfolgung zu konfigurieren - Details finden Sie hier: Ссылка

Ich hatte bei WCF alle möglichen Probleme mit dem Herausziehen von Haaren, aber diese Art von Leistungsproblemen auf der gleichen Box ist nichts, was ich jemals zuvor gesehen habe. Wie andere gesagt haben, die wahrscheinlichste Ursache wäre das "Aufwärmen" des Servers, aber wenn Sie es mehrmals aufrufen, sollte dies kein Problem sein. Haben Sie versucht, den Code mehrmals innerhalb Ihrer Client-App aufzurufen?

    
Matt Roberts 18.06.2012 07:33
quelle