
Ich lade von einem Server herunter und die Downloadgeschwindigkeit mit FileZilla liegt bei maximal 1,3 MiB/Sekunde, aber ich kann parallele Downloads starten und diese werden ebenfalls mit 1,3 MiB/Sekunde heruntergeladen. Warum kann ich also nicht eine einzige Datei schneller als 1,3 MB/s herunterladen und so die verfügbare Bandbreite (~6+MB/s) fast ausschöpfen?
Ich weiß, dass ich einen anderen SFTP-Client verwenden kann, der segmentierte Downloads unterstützt, wie z. B. LFTP. Kennen Sie andere gute Open Source-Clients?
Aber ich möchte trotzdem wissen, was das Herunterladen einer Datei auf nur 1,3 MB/s begrenzt. Ist das eine technische Einschränkung bei TCP und Puffern usw. oder ein Konfigurationsproblem? Ich habe es überprüft und bin sicher, dass für FileZilla überhaupt keine Verkehrsdrosselung aktiviert ist.
Außerdem habe ich rsync ausprobiert und es war schlechter als FileZilla/SFTP. Ich habe auch WinSCP ausprobiert und es war am langsamsten, unabhängig von der Methode SCP/SFTP. Mit einer konstanten Übertragungsgeschwindigkeit von 1,3 MB/s ist FileZilla im Vergleich zu den anderen Übertragungsmethoden also ziemlich gut.
Wenn jemand eine gute Erklärung dafür hat, warum die Übertragungsgeschwindigkeit bei 1,3 MB/s ihren Höhepunkt erreicht, würde ich das wirklich gerne wissen und ob es möglich ist, dies zu erhöhen, ohne segmentiertes Herunterladen zu verwenden. Auf dem Server läuft OpenSSH 6.7p1 (Debian), der Client ist FileZilla unter Windows.
UPDATE: Als Antwort auf Martins Informationen (siehe seine Antwort unten) füge ich hinzu, dass der Ping zwischen Server und Client, der gerade herunterlädt, ziemlich konstant zwischen 180 und 190 ms liegt. Auch die CPU-Auslastung ist sehr gering, maximal 2 % bis 8 %. Ich habe es mit der neuesten Version von WinSCP 5.73 versucht und im SFTP-Modus 555 kb/s und im SCP-Modus maximal etwa 805 kb/s erreicht. Wenn ich hingegen eine sekundäre parallele Übertragung in Filezilla starte, erhalte ich dafür ebenfalls konstant 1,3 MiB/s.
Könnte die 180-ms-Verzögerung zum Server also ein mathematisch limitierender Faktor sein, wie Martin und Michael kurz angemerkt haben? Oder könnte es noch etwas anderes geben, das dafür verantwortlich ist, sodass ich den Durchsatz verbessern kann? Falls nicht, wäre ich dankbar, wenn jemand einen anderen Open-Source-Downloader kennt (wie lftp, läuft aber gut unter Windows), der sicher ist und segmentiertes Herunterladen unterstützt.
Antwort1
Es gibt drei allgemeine Faktoren, die die Übertragungsgeschwindigkeit beeinflussen:
Bandbreite– Ein offensichtlicher Faktor, der anscheinend nicht Ihr Problem ist.
Netzwerkverzögerung/Latenz– SFTP ist ein paketorientiertes Protokoll. Beim Herunterladen sendet der SFTP-Client eine Leseanforderung an den SFTP-Server, wartet auf eine Antwort, hängt die zurückgegebenen Daten an eine lokale Datei an und wiederholt dies bis zum Ende der Datei.
Selbst wenn Ihre Verbindung schnell ist, dauert es eine Weile, bis die Daten zurückkommen, wenn der Server weit entfernt (oder langsam) ist. Wenn der Client diese Zeit nutzlos mit Warten verbringt, ist Ihre Übertragungsgeschwindigkeit niedrig.
Die meisten SFTP-Clients (einschließlich FileZilla und WinSCP) umgehen das Problem, indem sie bei jeder einzelnen Leseanforderung einen großen Teil der Datei anfordern und mehrere Leseanforderungen senden (in die Warteschlange stellen), ohne auf eine Antwort auf die vorherige zu warten. WinSCP kann beispielsweise bis zu 32 Blöcke mit jeweils 32 KB gleichzeitig anfordern, insgesamt also 1 MB (dies sind die Standardeinstellungen). Wenn jedoch eine große Diskrepanz zwischen der Bandbreite und der Netzwerkverzögerung besteht, kann selbst dieses 1 MB zu klein sein, um die Bandbreite auszulasten.
Ein zugrunde liegendes TCP-Protokoll kann unter einem ähnlichen Problem leiden. Es geht also nicht nur darum, wie effizient der eigentliche SFTP-Client ist, sondern auch darum, wie effizient eine zugrunde liegende TCP-Schicht ist.
Siehe auchBandbreitenverzögerungsproduktauf Wikipedia.
Ich glaube auch nicht, dass das Ihr Problem ist, zumindest wenn Sie die neueste Version von WinSCP für die Tests verwendet haben. Es gabeinige Verbesserungenin den jüngsten Versionen, die es WinSCP ermöglichen, Verbindungen mit hoher Latenz genauso effizient zu nutzen wie FileZilla.
CPU– Da SFTP verschlüsselt ist, ist es CPU-intensiv. Wenn Sie eine relativ langsame CPU im Vergleich zu einer großen Bandbreite haben, kann die Übertragung dadurch begrenzt werden, dass Ihre CPU die Daten nicht so schnell verschlüsseln (oder im Falle des Downloads entschlüsseln) kann, wie Ihr Netzwerk sie übertragen kann.
Gängige SFTP-Clients können die Verschlüsselung/Entschlüsselung nicht auf die CPU-Kerne verteilen. Daher ist es eigentlich die Kapazität eines einzelnen CPU-Kerns, die die Übertragungsgeschwindigkeit begrenzt.
Über den Windows Task-Manager können Sie feststellen, ob einer der Kerne während der Übertragung maximal ausgelastet ist.
Ein Teil dieser Antwort stammt aus dem WinSCP-ArtikelDie Dateiübertragungsgeschwindigkeit ist sehr niedrig. WinSCP nutzt nicht die gesamte verfügbare Bandbreite. Wie kann ich die Übertragungsgeschwindigkeit verbessern?
Antwort2
Ich hatte dieses Problem auch.
Ich habe den Task-Manager verwendet, um die Priorität auf „hoch“ zu setzen.
Jetzt komme ich auf bis zu 5 MiB/s
Antwort3
Ich habe es kürzlich im selben Netzwerk mit Windows 10 und vielleicht einer neueren Version von Filezilla versucht und konnte vom selben Server aus Übertragungen mit bis zu 7 MB/Sekunde durchführen! Dann habe ich es mit RSYNC in einer virtuellen Maschine getestet und auch 7 MB/Sekunde erreicht. Ich bin mir jetzt „ziemlich sicher“, dass das Problem an der COMODO-Firewall liegt, die ich auf diesem Windows 7-System installiert habe.
Selbst wenn Sie es „deaktivieren“, setzt es anscheinend keine Regeln durch, sondern verlangsamt den Netzwerkstapel. Ich habe dieses Windows 7-System auch in einer virtuellen Maschine installiert/repliziert und werde versuchen, Comodo Cis Premium (Antivirus + Firewall) vollständig zu „entfernen“ und dies hier bestätigen. Ich sollte auch erwähnen, dass ich auf dieser Maschine auch unregelmäßige, zeitweise Latenz-Pings zu einigen Systemen in meinem Netzwerk bemerkt habe, während alle anderen Systeme dazwischen stabil waren (<1 ms). Die Produktinformationen zur Bandbreitenverzögerung sind also sehr gut, aber in meinem Fall konnte ich Filezilla und Rsync bei einer anderen Installation, im selben lokalen und Remote-Netzwerk, beide mit 7 MB/s erreichen (was meine verfügbare Bandbreite im Grunde auslastet).