运行netstat -su查看丢包信息

watch netstat -su

image.png
可以看到上面圈出来的部分, 丢包数量一直在增加.

查看top信息

image.png
从上面信息可以看出, cpu使用率是4.4%, 而si使用率已经到7.3%.
si代表的是度量(从硬中断转移过来的)软 中断的 CPU 使用量.
也即是说, 消耗在软中断上面的cpu资源比正常的cpu使用还高.

确定是哪些中断的占比较高

  1. cat /proc/softirqs

image.png
上面是软中断在cpu上面的分布, 如果某一列的数值远远大于其他列, 则属于异常情况.
此处的NET_RX比其他多出一个数量级, 明显存在异常.

查看网卡是否丢包

image.png
可以看到网卡一切正常, 没有发生丢包情况, 那丢包应该是发生在网卡往上送数据的过程中了.
下面再继续看.

查看每个协议层的统计信息

  1. cat /proc/net/snmp

image.png
可以看到数据从ip层到udp层时, ip层没什么异常. udp层有大量的RcvbufErrors

运行dropwatch

下面是具体的运行结果:

  1. dropwatch -l kas

image.png

查看内核版本:

  1. 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

查看对应的函数列表:

  1. grep -w "udp_queue_rcv_skb" /boot/System.map-3.10.0-862.14.4.el7.x86_64 -A10

image.png
上面dropwatch看到的丢包的地点是: 101 drops at udp_queue_rcv_skb+3df (0xffffffff94c68abf)
那ffffffff816686e0 + 3df = FFFFFFFF81668ABF 还没进入 __udp4_lib_rcv