![当我向服务器发送数据时,其带宽有限](https://linux22.com/image/225755/%E5%BD%93%E6%88%91%E5%90%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8F%91%E9%80%81%E6%95%B0%E6%8D%AE%E6%97%B6%EF%BC%8C%E5%85%B6%E5%B8%A6%E5%AE%BD%E6%9C%89%E9%99%90.png)
我和我的 6 台服务器有光纤连接。服务器托管在不同的城市。我们的上传和下载速度都超过 100Mbps。速度测试表明带宽良好。但是,当我尝试通过 TCP(随机端口)或 SSH (scp) 向服务器发送一些文件(单个文件)时,此限制为 ~1MBps。
编辑:当我从服务器下载时,速度非常快(我的最大速度11MBps)
当我的朋友从不同的位置尝试此操作时,它们的速度也被限制为 ~1MBps。如果我们同时发送,我们的速率将小于 1 MBps(速率之和为 1MBps)。我尝试了 2 个不同 ISP 上的服务器,行为相同。
服务器是 Ubuntu 22.04 上的“Intel NUC”,ufw
已禁用,ISP 表示其端没有 QoL。服务器尚未运行任何服务。iftop
交通空荡荡。我忍不住认为这是一个软件问题。
如果这确实是一个问题,我该如何排除故障软件问题?
这是我正在做的测试scp -P $PORT $FILE $USER@$HOST:/dev/null
这是 ethtool 的结果:
Settings for enp1s0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Link partner advertised pause frame use: No
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Auto-negotiation: on
master-slave cfg: preferred slave
master-slave status: slave
Port: Twisted Pair
PHYAD: 0
Transceiver: external
MDI-X: Unknown
netlink error: Operation not permitted
Link detected: yes
编辑1:这是我到服务器的iperf3的结果:
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 2.05 MBytes 17.2 Mbits/sec
[ 5] 1.00-2.00 sec 1.89 MBytes 15.8 Mbits/sec
[ 5] 2.00-3.00 sec 2.01 MBytes 16.9 Mbits/sec
[ 5] 3.00-4.00 sec 2.32 MBytes 19.4 Mbits/sec
[ 5] 4.00-5.00 sec 2.75 MBytes 23.0 Mbits/sec
[ 5] 5.00-6.00 sec 1.19 MBytes 10.0 Mbits/sec
[ 5] 6.00-7.00 sec 2.49 MBytes 20.9 Mbits/sec
[ 5] 7.00-8.00 sec 2.55 MBytes 21.4 Mbits/sec
[ 5] 8.00-9.00 sec 1.64 MBytes 13.8 Mbits/sec
[ 5] 9.00-10.00 sec 2.31 MBytes 19.4 Mbits/sec
编辑2:该视频显示出奇怪的行为。当我们打开tcptrack
软件时,它会“释放”带宽。当我们关闭软件时,带宽又被“束缚”。
https://youtube.com/shorts/zKkKa2ZPJ94?feature=share
编辑3:当我将网络设置为混杂模式时,问题就解决了。但我相信这是一个坏主意......
sudo ifconfig enp1s0 promisc
答案1
你的ethtool
转储有一个让我担心的问题:
Auto-negotiation: on
这允许您的 NIC 与“另一端”协商通过线路传输位的速度。此协商发生在 OSI 7 层模型的最低电路层。它没有被记录。
它适用于速度随时间变化的连接。那不是你。
但是,有时节点会陷入“自动协商风暴”,其中两个节点不断交换低级别速度协商,而不是数据包。
您可以使用ethtool
关闭自动协商:
sudo ethtool --change enp1s0 autoneg off
读man ethtool
。
答案2
我通过将以太网驱动程序从 r8169 降级到 r8168 解决了这个问题。 (瑞昱)
sudo apt install r8168-dkms
sudo modprobe r8168