现象
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