运行netstat -su查看丢包信息
watch netstat -su
可以看到上面圈出来的部分, 丢包数量一直在增加.
查看top信息
从上面信息可以看出, cpu使用率是4.4%, 而si使用率已经到7.3%.
si代表的是度量(从硬中断转移过来的)软 中断的 CPU 使用量.
也即是说, 消耗在软中断上面的cpu资源比正常的cpu使用还高.
确定是哪些中断的占比较高
cat /proc/softirqs
上面是软中断在cpu上面的分布, 如果某一列的数值远远大于其他列, 则属于异常情况.
此处的NET_RX比其他多出一个数量级, 明显存在异常.
查看网卡是否丢包
可以看到网卡一切正常, 没有发生丢包情况, 那丢包应该是发生在网卡往上送数据的过程中了.
下面再继续看.
查看每个协议层的统计信息
cat /proc/net/snmp
可以看到数据从ip层到udp层时, ip层没什么异常. udp层有大量的RcvbufErrors
运行dropwatch
下面是具体的运行结果:
dropwatch -l kas
查看内核版本:
uname -a
[root@BSS_CC01_111_224 ~]# uname -a
Linux BSS_CC01_111_224 3.10.0-862.14.4.el7.x86_64 #1 SMP Wed Sep 26 15:12:11 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
查看对应的函数列表:
grep -w "udp_queue_rcv_skb" /boot/System.map-3.10.0-862.14.4.el7.x86_64 -A10
上面dropwatch看到的丢包的地点是: 101 drops at udp_queue_rcv_skb+3df (0xffffffff94c68abf)
那ffffffff816686e0 + 3df = FFFFFFFF81668ABF 还没进入 __udp4_lib_rcv