
我正在從伺服器下載,FileZilla 的下載速度最大為 1.3MiB/秒,但我可以開始並發下載,它們也將以 1.3MiB/秒的速度下載。那麼,為什麼我不能以超過 1.3MB/s 的速度下載一個檔案並接近飽和可用頻寬(~6+MB/s)呢?
我知道我可以使用其他一些支援分段下載的 SFTP 用戶端,例如 lftp,知道其他好的開源用戶端嗎?
但我仍然想知道是什麼限制了下載一個檔案的速度只有 1.3MB/s,是 TCP 和緩衝區等技術限制還是某些設定問題?我檢查了一下,確信 FileZilla 根本沒有啟用流量限制。
我還嘗試了 rsync,它比 FileZilla/SFTP 更糟。我還嘗試了 WinSCP,無論採用哪種 SCP/SFTP 方法,它都是最慢的。因此,與其他傳輸方法相比,FileZilla 以 1.3MB/s 的恆定傳輸速度相當不錯。
如果有人對為什麼傳輸峰值達到 1.3MB/s 有一個很好的解釋,我真的很想知道,以及是否有可能在不訴諸分段下載的情況下提高傳輸速度。伺服器執行 OpenSSH 6.7p1 (Debian) 用戶端是 Windows 上的 FileZilla。
更新:為了回應 Martin 的資訊(請參閱下面的答案),我補充說,正在下載的伺服器和客戶端之間的 ping 為 180 毫秒到 190 毫秒,相當穩定。 CPU 使用率也非常低,最多 2% 到 8%。我嘗試使用最新版本的winscp 5.73,在sftp模式下,我得到了555kb/s,在scp模式下,最大速度約為805kb/s。然而,如果我在 Filezilla 中啟動輔助並發傳輸,我也會得到恆定的 1.3MiB/s。
那麼,正如 Martin 和 Michael 所提到的那樣,伺服器 180 毫秒的延遲是否會成為數學上的限制因素?或者是否還有其他原因可以歸咎於我可以提高吞吐量?如果沒有,如果有人知道其他安全且支援分段下載的開源下載器(例如 lftp,但在 Windows 上運作良好),我將不勝感激。
答案1
影響傳輸速度的三個常見因素:
頻寬– 一個明顯的因素,顯然不是你的麻煩。
網路延遲/延遲– SFTP 是面向封包的協定。下載時,SFTP客戶端向SFTP伺服器發送「讀取」請求,等待回應,將傳回的資料追加到本機檔案;並重複,直到文件末尾。
即使您的連線速度很快,如果伺服器距離很遠(或速度很慢),資料也需要一段時間才能回傳。如果客戶端把這段時間浪費在無用的等待上,那麼你的傳輸速度就會很低。
大多數SFTP 用戶端(包括FileZilla 和WinSCP)透過在每個「讀取」請求中請求大塊檔案以及發送(排隊)多個「讀取」請求而不等待對前一個請求的回應來克服該問題。例如,WinSCP 一次最多可以請求 32 個區塊,每個區塊 32 KB,總計 1 MB(這些是預設值)。但如果頻寬和網路延遲之間存在很大差異,即使 1 MB 也可能太小而無法使頻寬飽和。
底層 TCP 協定也可能遇到類似的問題。因此,這不僅關係到實際 SFTP 用戶端的效率,也關係到底層 TCP 層的效率。
也可以看看頻寬延遲積在維基百科上。
我認為這也不是你的麻煩,至少如果你使用了最新版本的 WinSCP 進行測試的話。曾經有過一些改進在最近的版本中,它允許 WinSCP 與 FileZilla 一樣有效地利用高延遲連線。
中央處理器– SFTP 是加密的,而且是 CPU 密集的。如果您的 CPU 相對較慢,與較大的頻寬相比,傳輸可能會受到 CPU 無法以網路傳輸資料的速度加密(或在下載時解密)資料的限制。
普通的SFTP客戶端無法將加解密分佈在CPU核之間,因此實際上是單一CPU核的容量限制了傳輸速度。
使用 Windows 工作管理員查看傳輸期間是否充分利用其中一個核心。
此答案部分來自 WinSCP 文章文件傳輸速度非常低。 WinSCP 不利用所有可用頻寬。如何提高傳輸速度?
答案2
我也有這個問題。
我使用任務管理器將優先級設為高。
現在我的速度高達 5 MiB/s
答案3
我最近在 Windows 10 和更新版本的 filezilla 上嘗試了相同的網絡,我從同一台伺服器獲得了高達 7MB/秒的傳輸速度!然後我在虛擬機器內使用 RSYNC 進行測試,也獲得了 7MB/秒的速度。我現在「非常確定」問題出在我在 Windows 7 系統上安裝的 COMODO 防火牆。
顯然,即使您「停用」它,它所做的也不是強制執行規則,而是會減慢網路堆疊的速度。我也在虛擬機器內安裝/複製了這個 Windows 7 系統,我將嘗試完全「刪除」Comodo cis premium(防毒+防火牆)並在此處確認。我還應該提到,在這台機器上,我還注意到網路上某些系統的間歇性延遲 ping 不穩定,而這些系統之間的所有其他系統都穩定 <1 毫秒。因此,頻寬延遲產品資訊非常好,但就我而言,我能夠在另一個安裝、相同的本地和遠端網路上以7MB/s 的速度獲取filezilla 和rsync(這基本上飽和了我的可用頻寬) 。