it-swarm.com.de

scp blieb beim Kopieren großer Dateien stehen

Je nach den Erfordernissen des Experiments setze ich MTU auf 8000. Wenn ich scp zum Kopieren großer Dateien verwende, stoppte es mit 0.00%. Ich habe versucht scp -l oder scp -C und tcp_sack ein-/auszuschalten, aber es funktionierte immer noch nicht. Und ich kann die MTU-Größe nicht für den Vergleich der Testergebnisse ändern. Gibt es einen anderen Weg, um zu helfen?

28
flyhighzy

Ein Versuch einer umfassenden Lösung, da es je nach Ihrer Situation verschiedene Probleme und Einschränkungen geben kann.

rsync

Meine bevorzugte Option: Die Verwendung von rsync führt nicht zu diesem Problem und ist meiner Meinung nach etwas vielseitiger, z. Er verfolgt, welche Dateien bereits vorhanden sind. Sollte die Verbindung jemals unterbrochen werden, kann dies an der Stelle geschehen, an der sie aufgehört hat. Probieren Sie auch das Flag --partial. - nter andere Dinge .

Anstatt von

scp local/path/some_file [email protected]:"/some/path/"

du kannst es einfach tun

rsync -avz --progress local/path/some_file [email protected]:"/some/path/"

Ich habe dies mehrmals getestet, als scp mir das gleiche Problem bereitete wie Ihnen - und jetzt verwende ich standardmäßig nur rsync.

Geschwindigkeit begrenzen

Keine Lösung für OP, da die MTU in dieser Situation behoben ist (und wahrscheinlich nicht das Problem hier), aber wenn der Schuldige eine langsame/unzuverlässige Verbindung zwischen den beiden Laufwerken ist, werden durch das Festlegen einer Geschwindigkeitsbegrenzung die Verzögerungen verringert, die das TCP Verbindungsabbau - natürlich auf Kosten einer langsameren Übertragung. Dies liegt daran, dass scp die gesamte Bandbreite nutzt, die es bekommen kann, es sei denn, Sie geben die maximale Datenrate in Kilobit wie folgt an:

scp -l 8192 local/path/some_file [email protected]:"/some/path/"

Dies funktioniert aber nicht immer .

Komprimierungsoption

die Option -C von scp kann beschleunigen die Übertragung, wodurch die Wahrscheinlichkeit verringert wird, dass die Übertragung zum Stillstand kommt.

Deaktivieren von TCP SACK

Wie vom OP erwähnt, und hier .

Sudo sysctl -w net.ipv4.tcp_sack=0

( oder ähnlich )

LAN-Karte MTU

Wieder ein MTU fix , nicht unbedingt der Übertragung speziell aber:

ifconfig eth0 mtu 1492

oder auf neueren (Linux) Systemen :

ip link set dev eth0 mtu 1492

Andere

Wenn alles andere fehlschlägt, listet this eine weitere Handvoll möglicher Lösungen auf, die hier nicht enthalten sind.

Das exotischere HPN-Fehler kann auch schuld sein.

69
BrechtDeMan

Haben Sie eine Chance, hinter einer Cisco ASA-Firewall zu stehen? Wenn dies der Fall ist, deaktivieren Sie "Sequence Number Randomization", und das wird sehr hilfreich sein. Deaktivieren Sie auch TCP Offload (Ethtool -K $ INTERFACE und deaktivieren Sie diese Option), wenn Sie sich bei Cisco ASA mit Broadcom befinden Netzwerkkarten in Ihrem Server.

0
dotwaffle