天天看點

nf_conntrack滿之解決方法

(2016-08-09 17:27:36)

nf_conntrack滿之解決方法

vim /var/log/message報錯

nf_conntrack: table full, dropping packet

先關掉iptables

/etc/init.d/iptables stop

檢視目前的連接配接數:

# grep nf_conntrack /proc/slabinfo

查出目前 nf_conntrack 的排名:

$ cat /proc/net/nf_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2 | sort | uniq -c | sort -nr | head -n 10

優化參數

狀态跟蹤表的最大行數的設定,理論最大值 CONNTRACK_MAX = RAMSIZE (in bytes) / 16384 / (ARCH / 32) 

以64G的64位作業系統為例,CONNTRACK_MAX = 64*1024*1024*1024/16384/2 = 2097152 

即時生效請執行: 

sysctl –w net.netfilter.nf_conntrack_max = 524288  (16G)

其哈希表大小通常為總表的1/8,最大為1/2。CONNTRACK_BUCKETS = CONNTRACK_MAX / 8 

同樣64G的64位作業系統,哈希最佳範圍是 262144 ~ 1048576 。 

運作狀态中通過 sysctl net.netfilter.nf_conntrack_buckets 進行檢視,通過檔案 /sys/module/nf_conntrack/parameters/hashsize 進行設定 

或者建立 /etc/modprobe.d/iptables.conf ,重新加載子產品才生效: 

options nf_conntrack hashsize = 262144

還有些相關的系統參數`sysctl -a | grep nf_conntrack`可以調優(/etc/sysctl.conf ): 

net.netfilter.nf_conntrack_max  =  1048576   

net.netfilter.ip_conntrack_tcp_timeout_established  =  3600   

net.netfilter.nf_conntrack_tcp_timeout_close_wait  =  60   

net.netfilter.nf_conntrack_tcp_timeout_fin_wait  =  120   

net.netfilter.nf_conntrack_tcp_timeout_time_wait  =  120

本文轉自 luoguo 51CTO部落格,原文連結:http://blog.51cto.com/luoguoling/1920590

繼續閱讀