Wenn ich nc
, scp
, wget
zum Übertragen von Dateien zwischen 2 Rechnern über eine dedizierte 2Mbps-Verbindung verwende, erreiche ich Geschwindigkeiten zwischen 0,5 und 1 Mbps. Wenn ich jedoch iperf -c 10.0.1.4 -t 20 -P 12
(zum Beispiel) verwende, kann ich die Geschwindigkeit der Verbindung maximieren (erreiche stabile 2 Mbps).
Gibt es eine Möglichkeit, einzelne Stream-Übertragungen (wie sie von durchgeführt werden scp
) durchzuführen, um die gesamte/den größten Teil der Verbindung zu nutzen? Irgendeine Art von TCP-Einstellungen oder iptables...?
Antwort1
Geben wir zunächst zu, dass Sie Äpfel mit Birnen vergleichen.
nc
und scp
übertragen wget
normalerweise mit einem einzigen TCP-Socket. Wenn Sie jedoch verwenden iperf -P 12
, verwenden Siezwölfparallele TCP-Sockets. Dies ist eine nicht triviale Unterscheidung. Je mehr parallele Verbindungen Sie haben, desto größer ist Ihr Bandbreitenverbrauch. Tatsächlichspeedtest.net
verwendet mehrere parallele TCP-Streams, um die Bandbreitenkapazität zuverlässig zu messen, selbst wenn Ihre Verbindung einen so erheblichen Paketverlust aufweist, dass ein einzelner TCP-Socket ausfallen würde. Ich habe gesehen, wie sie Verbindungen mit 1,5 % Verlust sättigten (was den Durchsatz auf einem normalen TCP-Socket dezimieren würde).
Die Hauptgründe für nicht optimale Single-Socket-TCP-Übertragungen sind Paketverlust und Verzögerung/Jitter. Sie müssen feststellen und korrigieren, ob über Ihre Verbindung fortlaufend Paketverluste auftreten... Normalerweise verwende ichmtr
oderwinmtr
dafür...
mpenning@mpenning-T61:~$ mtr -n <destination_ip>
HOST: mpenning-T61 Loss% Snt Last Avg Best Wrst StDev
1. 10.239.84.1 0.0% 407 8.8 9.1 7.7 11.0 1.0
2. 66.68.3.223 0.0% 407 11.5 9.2 7.1 11.5 1.3
3. 66.68.0.8 0.0% 407 19.9 16.7 11.2 21.4 3.5
4. 72.179.205.58 0.0% 407 18.5 23.7 18.5 28.9 4.0
5. 66.109.6.108 5.2% 407 16.6 17.3 15.5 20.7 1.5 <----
6. 66.109.6.181 4.8% 407 18.2 19.1 16.8 23.6 2.3
7. 4.59.32.21 6.3% 407 20.5 26.1 19.5 68.2 14.9
8. 4.69.145.195 6.4% 406 21.4 27.6 19.8 79.1 18.1
9. <destination_ip> 6.8% 406 22.3 23.3 19.4 32.1 3.7
Wenn Sie einen Hop sehen, bei dem Sie im Laufe der Zeit kontinuierlich Pakete verlieren,Unddie Hops dahinter verlieren Pakete, dann müssen Sie das beheben, was diesen Paketverlust verursacht. Normalerweise messe ich mindestens fünf oder zehn Minuten lang ... oft stundenlang, wenn ich das Problem nicht sofort sehe.
Die andere Situation ist die Verzögerung. Sie müssen das Problem weiter quantifizieren, beispielsweise mit Einzelheiten zur End-to-End-Verzögerung sowie Informationen zum Quell-/Ziel-Betriebssystem, bevor jemand darauf reagieren kann.
Sie haben also einige Möglichkeiten ... entweder:
- Finden Sie heraus, was zu Leistungseinbußen führt
- Teilen Sie Ihre Übertragungen in mehrere Dateien auf und übertragen Sie diese parallel (um die Faktoren zu überwinden, die Ihren Durchsatz derzeit verringern).