Unterschiedliche Latenzen beim Senden
Hallo,
Ich habe eine Fachanwendung die auf einem Server mit Java Daten an verschiedene Clients schickt. Bei Clients mit Windows 7 32bit Systemen habe ich eine Latenz von 200-250ms und Clients mit Windows 10 64bit haben eine Latenz von 4-5ms.
Gibt es irgendjemand, der mir das halbwegs erklären kann warum das so ist? Der Standort der verschiedenen Clients ist der Selbe. Eigentlich sind alle Bedingungen die Gleichen bis auf das Betriebssystem. Die Datenmengen sind extrem gering.
Ich habe eine Fachanwendung die auf einem Server mit Java Daten an verschiedene Clients schickt. Bei Clients mit Windows 7 32bit Systemen habe ich eine Latenz von 200-250ms und Clients mit Windows 10 64bit haben eine Latenz von 4-5ms.
Gibt es irgendjemand, der mir das halbwegs erklären kann warum das so ist? Der Standort der verschiedenen Clients ist der Selbe. Eigentlich sind alle Bedingungen die Gleichen bis auf das Betriebssystem. Die Datenmengen sind extrem gering.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 399133
Url: https://administrator.de/contentid/399133
Ausgedruckt am: 23.11.2024 um 18:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo,
Ist die Client Hardware Identisch (eher nicht) oder fast Identisch oder grundlegend unterschiedlich?
Sind die gleichen (Identische) Switche in der Kommunikationskette und sind diese Identisch bzw. gleich Konfiguriert?
Und dann hast du die wie und womit die Latenz bei deiner Java Applikation festgestellt bzw. gemessen?
Gruß,
Peter
Zitat von @lowsounder:
Bei Clients mit Windows 7 32bit Systemen habe ich eine Latenz von 200-250ms und Clients mit Windows 10 64bit haben eine Latenz von 4-5ms.
In welcher Richtung, Server zu Client oder Client zu Server?Bei Clients mit Windows 7 32bit Systemen habe ich eine Latenz von 200-250ms und Clients mit Windows 10 64bit haben eine Latenz von 4-5ms.
Ist die Client Hardware Identisch (eher nicht) oder fast Identisch oder grundlegend unterschiedlich?
Sind die gleichen (Identische) Switche in der Kommunikationskette und sind diese Identisch bzw. gleich Konfiguriert?
Und dann hast du die wie und womit die Latenz bei deiner Java Applikation festgestellt bzw. gemessen?
Gruß,
Peter
200ms kligt nach dem W7 fuckup bei der implementierung des sog. Nagle-Algorithmus.
https://de.wikipedia.org/wiki/Nagle-Algorithmus
Sehr kurz gefasst: Das ist ein eigentlich eine sehr sinnvolle Idee um den TCP Traffic zu reduzieren - leider ist es bei Windows7 so das es einen default timeout von 200ms hat - und Falls die Anwendung etwas ungünstig kommuniziert, kann es sein das du immer wieder 200+x ms latenzen bekommst.
Man kann die Werte selbst in der Registry bestimmen, hier der direkte Powershell code der auf der aktiven Netzwerkkarte den Ack-Delay komplett abschaltet:
(Dannach ist aber noch ein Reboot nötig)
Die Auswirkungen sind übrigens nicht allzu Schlimm auf das Netzwerk, mit der TcpAckFrequency =1 wird jeder TCP Paket mit einem ACk beantwortet, mit der default einstelllung jedes zweite - d.h. theoretisch ein unterschied von 100% - aber in der Praxis sind es nur 1-2% - also zu vernachlässigen.
Ansonsten Google mal nach "windows 7 200ms tcp ack delay"
https://de.wikipedia.org/wiki/Nagle-Algorithmus
Sehr kurz gefasst: Das ist ein eigentlich eine sehr sinnvolle Idee um den TCP Traffic zu reduzieren - leider ist es bei Windows7 so das es einen default timeout von 200ms hat - und Falls die Anwendung etwas ungünstig kommuniziert, kann es sein das du immer wieder 200+x ms latenzen bekommst.
Man kann die Werte selbst in der Registry bestimmen, hier der direkte Powershell code der auf der aktiven Netzwerkkarte den Ack-Delay komplett abschaltet:
$strGUIDS=[array](Get-WmiObject win32_networkadapter -filter "netconnectionstatus = 2" | select -expand GUID)
foreach ($strGUID in $strGUIDS) {
New-ItemProperty -path HKLM:\System\CurrentControlSet\services\Tcpip\Parameters\Interfaces\$strGUID -propertytype DWORD -name TcpAckFrequency -value 1}
Die Auswirkungen sind übrigens nicht allzu Schlimm auf das Netzwerk, mit der TcpAckFrequency =1 wird jeder TCP Paket mit einem ACk beantwortet, mit der default einstelllung jedes zweite - d.h. theoretisch ein unterschied von 100% - aber in der Praxis sind es nur 1-2% - also zu vernachlässigen.
Ansonsten Google mal nach "windows 7 200ms tcp ack delay"