今天晚上發現某臺linux軟路由負載突然升高,8核CPU飆升至8的負載應該算是很高了,排查CPU使用非常厲害,8核中有6核均爲0%。通過top命令顯示CPU使用最高的四個進程均是ksoftirqd(分別是ksoftirqd/0,ksoftirqd/1,ksoftirqd/2,ksoftirqd/3),檢查流量並沒有升高,跟平時水平差不多,非常匪夷所思。
由於消耗太多通過平衡CPU中斷的方法已經沒有辦法阻止了。
突然想起來前兩天在iptables上添加了單IP連接數限制,於是懷疑跟它有關。使用iptables -vnL檢查iptables
Chain FORWARD (policy ACCEPT 761G packets, 477T bytes)
pkts bytes target prot opt in out source destination
50M 5790M REJECT tcp -- * * 10.x.0.0/16 0.0.0.0/0 #conn/32 > 500 reject-with icmp-port-unreachable
56M 4581M REJECT tcp -- * * 10.x.0.0/16 0.0.0.0/0 #conn/32 > 500 reject-with icmp-port-unreachable
2666K 208M REJECT tcp -- * * 10.x.0.0/16 0.0.0.0/0 #conn/32 > 500 reject-with icmp-port-unreachable
18M 976M REJECT tcp -- * * 10.x.0.0/16 0.0.0.0/0 #conn/32 > 500 reject-with icmp-port-unreachable
14112 745K REJECT tcp -- * * 10.x.0.0/16 0.0.0.0/0 #conn/32 > 500 reject-with icmp-port-unreachable
0 0 REJECT tcp -- * * 10.x.0.0/16 0.0.0.0/0 #conn/32 > 500 reject-with icmp-port-unreachable
於是使用 ksoftirqd -F FORWARD清空轉發表
於是恢復正常了
網上查了一些案例也是跟iptables有關係,不過我的vyatta路由器跑的不錯,改天把這臺centOS 5.4重裝了吧。