将带有SCP的大文件发送到某个服务器的速度正好是2112 kB

时间:2012-08-16 10:11:42

标签: ubuntu ssh scp

有一个ubuntu 10.04服务器,如果我从这个服务器所在办公室以外的任何服务器ssh一个文件(意味着任何使用scp-ing到这个服务器通过局域网从这个服务器总是工作的某些原因),然后scp-ing对于任何大小超过2112 kB的文件都会失败,并且卡在2112 kB。 所以

scp -vvv /home/attila-szeremi/aszeremi.tar.gz  attila@server.hu:~/aszeremi.tar.gz

在结尾处动态显示类似1% 2112KB 909.2KB/s - stalled -的内容,其中KB / s变得越来越低。

有谁知道可能导致这种情况的原因以及如何解决这个问题?

到目前为止我尝试过:

  • 使用scp -l 2000限制速度。它只是使文件发送速度变慢,而在2112 kB时它又被卡住了。
  • 启用与-C的兼容性。它仍然以同样的大小停滞不前。

5 个答案:

答案 0 :(得分:34)

我设法摆脱这个问题的唯一方法是disabling TCP SACK

$ sudo sysctl -w net.ipv4.tcp_sack=0

答案 1 :(得分:31)

我好像找到了解决办法。我不得不将LAN卡的mtu设置设置为1492:

# ifconfig eth0 mtu 1492

答案 2 :(得分:11)

在较新的Linux系统上, ifconfig 命令可能已被 ip

取代

设置mtu的命令变为:

# ip link set dev eth0 mtu 1492

答案 3 :(得分:2)

我坚持使用 Mac OS X 并且 @ dav.garcia的答案为我做了一些小改动:

  $ sudo sysctl -w net.inet.tcp.sack=0

答案 4 :(得分:0)

我看到了同样的问题。上述建议都不适合我,但他们让我走上了正确的道路。我在MTU设置为1300的防火墙后面。将我的局域网卡的MTU设置为非常低(576,有点随机)导致我的数据包停止被丢弃。

$ sudo ifconfig eno1 mtu 576

我必须在每个Linux客户端上执行此操作。出于某种原因,同一子网上的Windows机器没有问题。