ubuntu-将带有SCP的大文件发送到某台服务器的时间恰好为2112 kB

有一个特定的ubuntu 10.04服务器,如果我从该服务器所在办公室外的任何服务器将文件ssh到该服务器上(这意味着出于某种原因,通过该服务器通过LAN对该服务器进行任何使用都将始终有效) ,那么对于大小超过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启用压缩。 它仍然停滞在相同的大小。
Attila Szeremi asked 2020-07-30T17:04:24Z
5个解决方案
34 votes

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

$ sudo sysctl -w net.ipv4.tcp_sack=0
dav.garcia answered 2020-07-30T17:04:41Z
31 votes

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

# ifconfig eth0 mtu 1492
Attila Szeremi answered 2020-07-30T17:05:01Z
11 votes

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

设置mtu的命令变为:

# ip link set dev eth0 mtu 1492
kriss answered 2020-07-30T17:05:26Z
2 votes

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

  $ sudo sysctl -w net.inet.tcp.sack=0
vinitius answered 2020-07-30T17:05:46Z
0 votes

我看到了同样的问题。 上述建议对我没有任何帮助,但它们使我走上了正确的道路。 我位于MTU设置为1300的防火墙后面。将LAN卡的MTU设置为非常低(576,有些随机)会导致数据包停止丢弃。

$ sudo ifconfig eno1 mtu 576

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

Ben Jensen answered 2020-07-30T17:06:11Z
translate from https://stackoverflow.com:/questions/11985008/sending-a-large-file-with-scp-to-a-certain-server-stalls-at-exactly-2112-kb