用SCP发送一个大文件到一个确切的服务器在2112 kB处停顿

有一个特定的Ubuntu 10.04服务器,如果我从该服务器所在的办公室以外的任何服务器上向服务器提供一个文件(这意味着任何通过服务器内的局域网从服务器上使用scp到这个服务器总是出于某种原因) ,那么对于大小超过2112 kB的任何文件,scp-ing将会失败,并且会停留在2112 kB。 所以

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

显示了一些像1% 2112KB 909.2KB/s - stalled -在KB / s变得越来越低的末端dynamic调整。

有谁知道可能是什么原因造成的,我该如何解决?

我到目前为止所尝试的:

  • 用scp -l 2000来限制速度,它只是使文件发送速度变慢,而在2112 kB的时候它又被卡住了。
  • 使用-C进行压缩。 它仍然停滞在相同的大小。

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

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

我似乎find了解决办法。 我必须通过以下方式将LAN卡的mtu设置设置为1492:

 # ifconfig eth0 mtu 1492 

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

设置mtu的命令变成:

 # ip link set dev eth0 mtu 1492 

我在Mac OS X上遇到了同样的问题@ dav.garcia的答案对我做了一些小改动:

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

我看到了同样的问题。 上述build议都没有为我工作,但他们让我走在正确的道路上。 我在MTU设置为1300的防火墙后面。将我的LAN卡的MTU设置为非常低(576,有些随机)导致我的数据包停止丢弃。

 $ sudo ifconfig eno1 mtu 576 

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