Socketverbindung mit Verzögerung

29/09/2008 - 13:48 von Guido Forthofer | Report spam
Ich habe zwei .NET Anwendungen die über
Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
nach folgendem Muster kommunizieren.

Client sendet zunàchst ein Header und dann die Daten (nur paar Bytes). Der
Server empfàngt die Daten, wertet zunàchst den Header aus und weiß
anschließend was
er mit den Daten macht. Dann sendet er dem Client über dieses selbe Schema
die neue Daten zurück, also nichts aufregendes.

Ganze Zeit lokal getestet und nun einmal Remote versucht und
ups, plötzlich schleichen die Daten. Lokal hat die ganze Prozedur eine paar
Millisekunden gedauert und nun dauert das ganze ca. 250 ms mehr.

Ich habe mir also die Schnittstelle angesehen und bei Socket.NoDelay steht
wirklich etwas
von 200 ms, Socket.NoDelay = true, da sollte der Nagle-Alg. nicht
zu tragen kommen. Zum Scherz einmal geàndert und dann erhöht sich sogar
die Durchlaufzeit um ca. 350 - 400 ms.

Kann mir da jemand ein Tipp geben.

Guido
 

Lesen sie die antworten

#1 Seb
11/10/2008 - 16:23 | Warnen spam
Hallo Guido,

erfahrungsgemàss ist das Abschalten des Nagle Algorithmus nicht
gleichzusetzen mit Performancegewinn. Das kommt ganz auf die
Übertragungscharakteristik an. Für "normale" Applikationen sollte man ihn
immer aktiviert lassen. Warum es bei dir diese Verzögerungen kann ich dir
aber leider auch nicht sagen. Viel Glück!

Seb

"Guido Forthofer" wrote:

Ich habe zwei .NET Anwendungen die über
Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
nach folgendem Muster kommunizieren.

Client sendet zunàchst ein Header und dann die Daten (nur paar Bytes). Der
Server empfàngt die Daten, wertet zunàchst den Header aus und weiß
anschließend was
er mit den Daten macht. Dann sendet er dem Client über dieses selbe Schema
die neue Daten zurück, also nichts aufregendes.

Ganze Zeit lokal getestet und nun einmal Remote versucht und
ups, plötzlich schleichen die Daten. Lokal hat die ganze Prozedur eine paar
Millisekunden gedauert und nun dauert das ganze ca. 250 ms mehr.

Ich habe mir also die Schnittstelle angesehen und bei Socket.NoDelay steht
wirklich etwas
von 200 ms, Socket.NoDelay = true, da sollte der Nagle-Alg. nicht
zu tragen kommen. Zum Scherz einmal geàndert und dann erhöht sich sogar
die Durchlaufzeit um ca. 350 - 400 ms.

Kann mir da jemand ein Tipp geben.

Guido



Ähnliche fragen