Ich versuche, eine Reihe großer Dateien mit SFTP international zu übertragen, aber ich stelle fest, dass mein internationaler Partner trotz sehr guter Verbindungen auf beiden Seiten keine Upload-Geschwindigkeiten über ~ 50k erreichen kann. Es können mehrere Verbindungen mit dieser Geschwindigkeit hochgeladen werden (also keine Bandbreite?), Aber kein einzelner Upload verbessert die Geschwindigkeit. Dies ist ein Problem, da viele Dateien mehrere GB groß sind.
Das SFTP wird mit dem Standard-SFTP-System "Remote Login" von Apple OSX gehostet.
Gibt es eine Möglichkeit, die Upload-Geschwindigkeit zu verbessern, oder gibt es einen anderen SFTP-Host, der Abhilfe schafft? Mir ist nicht klar, ob dies ein Konfigurationsproblem oder eine inhärente Einschränkung des Protokolls ist.
(Aus Sicherheitsgründen muss ich eine Ende-zu-Ende-verschlüsselte Peer-zu-Peer-Verbindung verwenden - keine Cloud-Dienste).
quelle
rsync
Übertragungen erfüllt problemlos die Anforderungen von 1. Sichere Übertragung und 2. Maximierung der Bandbreite. Ein Beispiel zum Starten von N-rsync
Übertragungen finden Sie hier: stackoverflow.com/a/38014502/52074Antworten:
Mit dem OpenSSH-
sftp
Client (den Sie anscheinend verwenden) können Sie Folgendes verwenden:-R
Umschalten , um die Länge der Anforderungswarteschlange zu erhöhen (Standard ist 64)-B
Umschalten , um die Größe der Lese- / Schreibanforderung zu erhöhen (Standard ist 32 KB)Versuchen Sie zunächst, beide Werte zu verdoppeln:
Es spielt wahrscheinlich keine Rolle, welche davon Sie erhöhen.
Das Erhöhen von entweder sollte dazu beitragen, Ihre Verbindung mit hoher Latenz zu sättigen. Mit den oben genannten Einstellungen können zu jeder Zeit Daten im Wert von 8 MB in der Pipe übertragen werden (128 * 64K = 8M).
Beachten Sie, dass dies nur bei großen Dateiübertragungen hilft. Es hat keine Auswirkung, wenn viele kleine Dateien übertragen werden.
Hintergrundinformationen und Erläuterungen zu anderen (GUI-) SFTP-Clients finden Sie im Abschnitt "Netzwerkverzögerung / -latenz" in meiner Antwort auf " Warum ist die maximale FileZilla SFTP-Dateiübertragung auf 1,3 MB / s begrenzt, anstatt die verfügbare Bandbreite zu überlasten?" rsync und WinSCP sind noch langsamer .
quelle
Sie können versuchen, die Komprimierung zu aktivieren und prüfen, ob dies hilfreich ist.
Von
man sftp
:Und von
man ssh
:Es hört sich eher so an, als ob die Verbindung an einem bestimmten Punkt auf ihrem Weg mit einer begrenzten Geschwindigkeit verbunden sein könnte (oder eher, das scheint mir die einfachste Erklärung für Ihre 50 kB / s pro Verbindung zu sein, aber mehrere solcher Verbindungen sind möglich), obwohl dies möglicherweise nicht der Fall ist schlechte Idee, um sicherzustellen, dass die Festplatten auf beiden Seiten kein Faktor sind.
Sie könnten auch eine kurze Überprüfung durchführen, um festzustellen, ob es „offensichtliche“ Probleme gibt (z. B. eine große Anzahl von erneuten Übertragungen). Wenn Sie jedoch nicht sicher sind, dass Sie dies in Angriff nehmen können, würde ich wahrscheinlich nur sehen, ob die Komprimierung aktiviert wird Hilfe.
quelle
Es wurde noch nicht als Antwort erwähnt, aber wenn Sie mehrere Dateien über einen Link mit hoher Latenz übertragen, gibt es eine wirklich einfache Lösung, um eine bessere Leistung zu erzielen:
Übertragen Sie mehrere Dateien gleichzeitig.
Und es ist eine Lösung, die Sie sogar in Ihrer Frage erwähnt haben. Benutze es.
Grundsätzlich kann das TCP-Protokoll Verbindungen mit einem Produkt mit großer Bandbreitenverzögerung nicht sehr gut verarbeiten - eine einzelne Verbindung kann nicht genug Daten gleichzeitig in Bewegung halten. Siehe https://en.wikipedia.org/wiki/TCP_tuning
Da jede Verbindung durch das TCP-Protokoll begrenzt ist, verwenden Sie einfach mehr Verbindungen.
quelle
Beschleunigen Sie SFTP-Übertragungen
Angenommen, Ihre Probleme betreffen die Netzwerkoptimierung und / oder die Drosselung pro TCP-Verbindung, sehen Sie sich SFTP mit dem LFTP-Spiegel-Subsystem an
Die Netzwerkoptimierung an beiden Enden ist ein viel umfangreicheres Thema und würde viel Hin- und Herbewegung erfordern, wodurch das Thema aus dem Bereich von ServerFault herausgedrängt würde. Für einzelne Verbindungen kann die von iwaseatenbyagrue erwähnte Komprimierung in beiden Fällen hilfreich sein. Dies setzt voraus, dass das entfernte Ende die Komprimierung zulässt.
quelle
(Sie erwähnen "hohe Latenz" im Fragentitel, aber nicht im Nachrichtentext. Haben Sie die tatsächliche Latenz gemessen und was sind die Ergebnisse?)
Es gibt einen Patch für OpenSSH, der den Durchsatz einer Netzwerkverbindung mit hoher Latenz explizit verbessert: HPN-SSH : (Hervorhebung meiner)
Versuchen Sie also, HPN-SSH auf der Empfängerseite zu kompilieren und zu verwenden, und prüfen Sie, ob es Ihre Übertragungsgeschwindigkeit verbessert.
quelle
Sie sind sich nicht sicher, ob dies eine Option für Sie ist, aber haben Sie versucht, die Daten auf die internationale Site zu ziehen oder zu übertragen? Sowie entweder zu verschiedenen Zeiten, um zu sehen, ob es ein Problem mit dem Wettbewerb um Netzwerkressourcen gibt?
quelle
Es klingt nach einem Konfigurationsproblem - entweder absichtlich (als Mittel zum Upselling von Diensten, ohne dass zusätzliche Vorkehrungen getroffen werden müssen) oder versehentlich (z. B. zerbrochene Fensterskalierung oder übereifrige Verkehrskontrolle). Während Sie die Übertragungen parallelisieren konnten, haben Sie uns nichts darüber gesagt, was sich am anderen Ende der Verbindung befindet oder ob es sich lohnt, einige einfache Skripte für das Sharding / die Wiederherstellung von Dateien zu entwickeln.
Tuning der Warteschlangengröße und Komprimierung wahrscheinlich keine wesentlichen Auswirkungen haben, es sei denn , die Ursache ist sehr schlecht Software geschrieben (und openSSH nicht in diese Kategorie - nicht viel Sinn , mit OpenSSH mit einer längeren Anforderungswarteschlange / größere Blockgröße , wenn die Latenz über 250 ms. Möglicherweise möchten Sie versuchen, mit verschiedenen Clients an verschiedenen Standorten ein Problem mit dem Server auszuschließen.
Mein erster Anruf wäre, herauszufinden, welcher Anbieter für das Problem verantwortlich ist, ihn zu bitten, das Problem zu beheben oder zu einem anderen Anbieter zu wechseln.
quelle
put