ksoftirqid进程CPU100%排查

1、打开网页发现cpu使用率100%

2、后台top,查看了一下,发现原来cpu被ksoftird吃了,

3、使用perf top命令查看:

4、发现ksoftirqd是被e1000_clean与e1000_xmit_frame占用了,

由于e1000_clean与e1000_xmit_frame代表的是网卡,

其中e1000_clean_rx_irq()和e1000_xmit_frame()分别是网卡的收包和发包的核心函数

5、网卡的初始化

    e1000网卡的初始化调用函数e1000_probe(),网卡作为一种PCI设备就要初始化PCI设备的一些属性,设置DMA,初始化驱动的操作函数(收包函数、发包函数)、设置循环队列缓冲区大小,把网卡注册到dev_base全局数组中。网卡的收包方式有三种

(1)中断方式:

     传统的网卡都采用这种模式,因为传统的网卡收包量不是很大,这种方式就是当有一个数据包来了就产生一个中断,然后cpu就放下手中的事情去把网络数据包拷贝到内存处理,当流量很大时会产生大量的中断,cpu就不断的上下文切换,这样是很损耗cpu的性能,这种只适合网络流量不大的情况。

(2)poll

      第二种方式是轮询,设置一个定时器,每隔一定时间cpu就去查看是网卡是否有接受数据包,如果有数据上来就拷贝内存处理,这种方式适合大流量情景,避免cpu产生大量中断。但当网络流量小时,cpu还有不断的去检查网卡就损耗了cpu资源。

(3)DMA

   系统会在内存中开辟一个缓冲区环形队列来收发数据包,然后把缓冲区通过DMA映射到网卡,这样网卡收到数据包后就是直接是放到内存的环形队列中,然后产生中断让cpu去处理,这样cpu可以自己干自己的事情,只有当有数据包到来才去内存中处理。
由于我本身没有往该网站打流量,但是通过前端接口的网络流量发现有流量出现,

5、后台转包:tcpdump -i Protect1

发现同一平台,26.116与26.118在进行VRRP主备机交换,由于广播影响,导致我的网站也受到到了影响。
因为vrrp的形式是组播(多播),这个和广播基本一个原理,只不过缩小了范围,让几个服务器能收到,众所周知广播必须在2层里面实现,出3层就出了广播域了,因此不同网段肯定不能形成vrrp。而且vrrp中的ip切换是靠arp欺骗实现的,否则vip从主切度到备得断多少机器,arp欺骗也是没法在出了3层以外的2个机器直接做的。

解决办法关闭vrrp功能。

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值