我无法将大于 1.2 kB 的文件从我的系统 (Ubuntu) 上传到我的网站,请求一直停滞不前。不知何故我发现了这个命令 echo 2 >/proc/sys/net/ipv4/tcp_mtu_probing
现在我可以将任何大小的文件从我的桌面上传到我的网站。
我不知道这个命令的作用以及为什么会这样。请帮我找出这个问题。
我在我的桌面上运行了 echo 2 >/proc/sys/net/ipv4/tcp_mtu_probing
并且它起作用了我没有在服务器上做任何改变。
最佳答案
根据man 7 tcp
:
tcp_mtu_probing (integer; default: 0; since Linux 2.6.17):
This parameter controls TCP Packetization-Layer Path MTU Discovery. The following values may be assigned to the file:
0 Disabled
1 Disabled by default, enabled when an ICMP black hole detected
2 Always enabled, use initial MSS of tcp_base_mss.
这意味着一旦启用,您的操作系统会尝试使用 Path MTU discovery 查找客户端和服务器之间的 MTU机制。它可能会增加您的默认 MTU(Linux 上为 1500),从而允许发送更大的数据包。
您可以通过运行 ip a
检查接口(interface)上的 MTU:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN # <= here MTU is 16436 bytes
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
# below MTU is 1500 bytes
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:0c:29:28:fd:4c brd ff:ff:ff:ff:ff:ff
inet 192.168.50.2/24 brd 192.168.50.255 scope global eth0
inet6 fe80::20c:29ff:fe28:fd4c/64 scope link
valid_lft forever preferred_lft forever
这是一种奇怪的行为,您无法传输文件,因为 IP 分段和 TCP 分段通常会在通过网络发送文件之前将文件分 block 。也许您应该检查您机器上的默认碎片/分段配置是什么。
关于linux - echo 2 >/proc/sys/net/ipv4/tcp_mtu_probing 能够解决我的问题,但为什么呢?这个命令是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37454773/