应使用ethtool查看网卡实际协商速率和双工模式,Speed显示当前链路速率(如1000Mb/s),Duplex必须为Full,Link detected须为yes,Auto-negotiation推荐为on,这才是决定吞吐上限的物理基础。

直接用 ethtool 查网卡当前双工模式和真实协商速率,是定位吞吐受限根源最高效的方式。关键不是看网卡标称能力,而是看它和对端(交换机、服务器或路由器)实际达成的链路状态——这才是决定吞吐上限的物理基础。
一、确认双工模式与协商速率是否正常
运行命令:
sudo ethtool eth0(把 eth0 换成你的实际网卡名,如 enp3s0f0、ens1f0)
重点关注以下几行:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
-
Speed:应为预期值(如
1000Mb/s、10000Mb/s),不是Unknown!或明显偏低(如千兆卡只显示100Mb/s) -
Duplex:必须是
Full;若为Half,说明链路两端协商出半双工,会严重限制吞吐并引发丢包 -
Link detected:必须为
yes,否则物理链路未通 -
Auto-negotiation:推荐保持
on;若为off,则速率/双工由手动设定,易与对端不一致
二、判断吞吐受限是否源于双工不匹配
半双工不是 Linux 主动降级的结果,而是协商结果。出现 Duplex: Half 通常意味着:
- 对端设备(如交换机端口)被强制设为
100Mbps Half,而本机开启自协商 - 网线质量差、长度超标(尤其百兆非屏蔽线超 100 米),导致协商退化
- 使用了不兼容的 SFP 光模块或光纤收发异常
验证方法:登录对端设备,查其对应端口协商状态(如 Cisco 用 show interfaces gi1/0/1 status,华为用 display interface GigabitEthernet 1/0/1),确认双方 Speed 和 Duplex 完全一致。
三、排查协商失败或速率降级线索
如果协商速率远低于预期(例如万兆卡只到 1G),进一步检查:
- 执行 ethtool -S eth0 | grep -i "error\|drop\|fail",关注:
rx_errors、tx_errors是否持续增长 → 物理干扰或硬件故障link_failures、negotiation_failures非零 → 自协商反复失败 - 查看内核日志:dmesg | grep -i "eth0\|link\|phy",留意
autoneg failed、link down、PHY reset等提示 - 临时关闭自协商测试(仅限调试):
sudo ethtool -s eth0 autoneg off speed 1000 duplex full
若此时链路稳定且吞吐恢复,问题大概率在协商机制本身(如对端老旧、光模块握手异常)
四、避免常见误判与操作陷阱
- 不要只看
ifconfig或ip link——它们不反映物理协商结果 - 手动设
speed和duplex必须配autoneg off,否则参数不生效 - 强制设置后若
Link detected: no,基本可判定两端配置不匹配,需同步调整对端 - 所有
ethtool -s设置均为临时生效,重启或ifdown/ifup后丢失;需写入网络配置文件或 systemd 服务持久化

















