问题分析
分析系统环境
银河麒麟操作系统
查看网络配置
查看网络情况,enp133s0f0和enp134s0f0配置mode4组成bond0。
查看./sos_commands/networking/ethtool_-S_enp133s0f0和./sos_commands/networking/ethtool_-S_enp134s0f0,发现两个网卡都存在大量的rxX_cache_full的情况。
查看bond0的rxDrop情况。
查看enp133s0f0和enp134s0f0网卡队列情况和ring buffer个数,两个网卡的网卡队列数为63,ring buffer个数为1024。
查看./proc/net/softnet_stat发现第二列和第三列都存在很大的值,查看对应的内核参数net.core.netdev_max_backlog为10000和net.core.netdev_budget为300。
- 第一列:processed:表示处理了多少个数据包。
- 第二列:dropped:表示丢弃了多少个数据包,因为队列满了或者内存不足。
- 第三列:time_squeeze:表示发生了多少次时间压缩,即软中断处理时间超过了预设的限制
/proc/net/softnet_stat 的第三列值持续增加,这通常意味着软中断处理时间不足以处理所有入站数据包。在这种情况下,可以尝试增加 net.core.netdev_budget 的值,以允许在单次软中断中处理更多的数据包,从而减少因为处理不及时而推迟或丢弃的数据包数量。
查看系统服务
发现irqbalance服务开启状态。
查看CPU情况
可见CPU是96核,分4个NUMA节点,每个numa节点24个CPU核。
查看./sys/class/net/enp133s0f0/device/numa_node和./sys/class/net/enp134s0f0/device/numa_node,可见两个网络接口都在numa node 2上。
分析sa日志
分析内存使用情况
sar -rh -f sa21,查看当时的内存使用情况,可见空闲内存较少,缓存较大。查看./proc/sys/vm/min_free_kbytes为524288,较小。
sar -rh -f sa20,查看前一天的内存使用情况,内存使用和问题发生时相同。
分析CPU使用情况
sar -u -f sa21,查看cpu使用情况,%system部分占用CPU较高。
sar -u -f sa20,查看前一天的CPU使用情况,前一天cpu使用情况和问题发生时类似。
分析负载情况
sar -q -f sa21,查看当时的系统负载,负载偏高。
sar -q -f sa20,查看前一天的系统负载情况,可见前一天的系统负载也偏高,和问题发生时没有明显差异
分析messages日志
查看messages日志,日志中没有明确的报错信息。