网卡丢包问题解决
1、 查看局域网内是否有MAC冲突;
2、 UDP丢包可以先增大协议栈缓存空间:
接收端:
echo 2129999999 > /proc/sys/net/core/rmem_max # 最大的TCP接收缓冲 echo 2129999999 > /proc/sys/net/core/rmem_default # 默认接收TCP缓冲
发送端:
echo 2129999999 > /proc/sys/net/core/wmem_default # 默认TCP发送缓冲 echo 2129999999 > /proc/sys/net/core/wmem_max # 最大的TCP发送缓冲
注:发送端的wmem_default不能大于接收端的rmem_default。
3、 查看ethtool -S <网口名> | grep -E “error|drop”:
rx_crc_errors: # 计数不为0代表有CRC错误,一般是模块或者网线问题,考虑先更换光纤/网线及光模块。 rx_fifo_errors:# Ring buffer满而导致丢包,通过ethtool -g查看当前值与最大值,ethtool -G ethx rx <rx> tx <tx>修改tx、rx Ring Buffer。 rx_missed_errors:# CPU处理不过来DMA中的ring buffer缓存报文导致的丢包。 # 解决方法是: a)# 网口中断绑定到不同的CPU; b)# UDP流量可以开启RSS; c)ethtool -G ethx rx <rx> # 增加队列深度,注意一般arm平台的OS页大小是64k,增加队列深度会导致内存占用高,可配合修改驱动源码中src/ kcompat.h文件解决。 d)numactl -H # 查看网卡numa node对应的内存使用情况,如内存占用过高会跨节点访问其他内存,导致处理速率慢,可通过绑核及增大物理内存解决。
4、两端开启流控:
开启命令:
ethtool -A enp217s0f0 rx on tx on
查看状态命令:
ethtool -a enp217s0f0

浙公网安备 33010602011771号