最大化各种应用程序的网络传输速度

最大化各种应用程序的网络传输速度

当使用ncscpwget在专用 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

如果你发现某个跳跃在一段时间内持续丢失数据包,如果后面的跳数丢失了数据包,那么您需要修复导致数据包丢失的任何原因。我通常测量至少五到十分钟……如果我没有立即发现问题,通常会测量几个小时。

另一种情况是延迟......您需要进一步量化问题,提供有关端到端延迟以及源/目标操作系统信息的具体信息,然后才有人对此做出回应。

因此,您有以下选择...可以:

  • 找出导致绩效下降的原因
  • 将传输拆分为多个文件并并行传输(以克服现在导致吞吐量下降的任何因素)

相关内容