我们有一台绑定了 2 个 10Gbps 的 RedHat 7.4 Linux 服务器,但由于某种原因,它无法以超过 1Gbps 的速度向另一台具有 10Gbps NIC 的服务器发送文件,接收工作正常,但无法发送。
谁能告诉我在哪里可以检查导致此问题的原因以及如何解决它?
作为参考,我们在两端运行了 iPerf,接收速度高达 9.53Gbps,但发送速度从未高于 955Mbps。
谢谢。
答案1
导致您出现此问题的原因有很多。常规解决方法如下:
- 因此 iperf 给出的数字正常,猜测问题不在于网络本身,而在于其他地方。但请使用
ethtool -S
和ip -s -s link show
命令检查两个绑定成员接口的计数器。也许 iperf 流量通过正常支路,但文件交换流量通过绑定的不良支路。检查 NIC 环的大小。检查暂停帧的统计信息 - 使用流量控制。 - 第一个检查点 - 存储子系统。磁盘速度慢可能会成为瓶颈。请使用
blktrace
、iotop
、等工具iostat
。 - 使用 tcpdump/wireshark 捕获流量并进行分析。Wireshark 有出色的内置工具。检查窗口大小图表 - 它显示是否存在网络问题,例如丢失或拥塞。
- 下一个检查点 - 读/写套接字缓冲区的大小。通过应用程序配置增加它或使用
sysctl
(变量*_rmem
和)更改默认值。使用或*_wmem
检查统计计数器。netstat
nstat
- 查看 CPU 负载。可能某个 CPU 核心过载,但其他核心处于空闲状态。
- 检查 GRO/LRO 和其他卸载。试用一下。
- 检查拥塞控制算法。