最大化各種應用程式的網路傳輸速度

最大化各種應用程式的網路傳輸速度

當使用nc, scp,wget在專用 2Mbps 鏈路上的兩台機器之間傳輸文件時,我獲得的速度在 0.5 到 1 Mbps 之間。然而,當我使用iperf -c 10.0.1.4 -t 20 -P 12(例如)時,我可以最大限度地提高連結速度(獲得穩定的 2Mbps)。

有沒有辦法進行單流傳輸(例如由 完成的傳輸scp)以利用全部/大部分連結?某種 tcp 設置,或 iptables...?

答案1

首先,我們承認您正在比較蘋果和橘子。

ncscp並且wget通常使用單一 TCP 套接字進行傳輸。但是,當您使用 時iperf -P 12,您正在使用十二並行 TCP 套接字。這是一個重要的區別。並行連線越多,頻寬消耗就越大。實際上,speedtest.net使用多個並行 TCP 流來可靠地測量頻寬容量,即使您的鏈路存在嚴重的資料包遺失,導致單一 TCP 套接字出現問題;我見過它們使鏈路飽和,損失為 1.5%(這會大幅降低普通 TCP 套接字上的吞吐量)。

單套接字 TCP 傳輸次佳的主要原因是封包遺失和延遲/抖動。您需要識別並糾正您的連結是否有任何持續的資料包丟失...我通常使用mtr或者winmtr為了這...

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

如果您看到隨著時間的推移不斷丟失資料包的躍點,它後面的躍點正在丟失資料包,那麼您需要修復導致資料包遺失的任何原因。我通常會測量至少五到十分鐘……如果我沒有立即發現問題,通常會測量幾個小時。

另一種情況是延遲......您需要透過有關端到端延遲的具體資訊以及來源/目標作業系統資訊進一步量化問題,然後才能有人對此做出回應。

所以你有一些選擇......要么:

  • 找出導致你效能下降的原因
  • 將您的傳輸分成多個檔案並並行傳輸它們(以克服現在降低吞吐量的任何因素)

相關內容