99网
您的当前位置:首页由于网卡单队列导致的CPU高

由于网卡单队列导致的CPU高

来源:99网

现象

redis 进程 cpu 跑满

原因

没有开启网卡多队列,导致只有一个cpu被使用
网卡在同一时刻只能产生一个中断,CPU在同一时刻只能响应一个中断,由于配置的原因,只有一颗cpu去响应中断(这个是可调的),所以所有的流量都压在了一个CPU上 ,把CPU跑满了。

为什么只有一颗cpu去响应中断?

这个是历史设计的问题,一开始CPU都是一核的,只能由唯一的CPU去响应,后来逐步发展出了多核的CPU,才有了可调整的参数去调整到底由几个CPU去处理。

处理方法

修改方案
1. 修改/etc/modprobe.d/modprobe.conf
在文件最后追加三行
alias eth0 igb
alias eth1 igb
options igb RSS=8,8
image001.png
2. 修改完之后就需要重启网络才能生效

只需要重新加载内核模块和重启网络服务就可以了,实际测试需要20s时间

操作命令
nohup rmmod igb && modprobe igb && /etc/init.d/network restart && /etc/rc3.d/S27route

因篇幅问题不能全部显示,请点此查看更多更全内容