47

有一个特定的 ubuntu 10.04 服务器,如果我从该服务器所在办公室之外的任何服务器将文件 ssh 到它上(意味着任何使用 scp-ing 从该服务器内部通过 LAN 到该服务器上的任何使用总是出于某种原因) ,然后 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 启用压缩。它仍然停滞在相同的大小。
4

5 回答 5

34

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

$ sudo sysctl -w net.ipv4.tcp_sack=0
于 2012-11-19T08:05:06.273 回答
33

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

# ifconfig eth0 mtu 1492
于 2012-08-16T11:00:29.577 回答
12

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

设置 mtu 的命令变为:

# ip link set dev eth0 mtu 1492
于 2014-06-03T15:55:23.447 回答
2

我在Mac OS X上遇到了同样的问题,@dav.garcia 的回答为我做了一个小小的改动:

  $ sudo sysctl -w net.inet.tcp.sack=0
于 2016-01-21T21:13:54.733 回答
0

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

$ sudo ifconfig eno1 mtu 576

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

于 2016-09-10T19:18:14.153 回答