我們的線上web服務器在訪問量很大時,就會出現網絡連接丟包的問題,通過dmesg命令查看日志,發現如下信息:
kernel: ip_conntrack: table full, dropping packet.kernel: printk: 1 messages suppressed.kernel: ip_conntrack: table full, dropping packet.kernel: printk: 2 messages suppressed.kernel: ip_conntrack: table full, dropping packet.
這里面關鍵的信息是"ip_conntrack: table full, dropping packet",從這里可以判斷出這跟iptables有關系了,因為iptables防火墻使用了ip_conntrack內核模塊實現連接跟蹤功能,所有的進出數據包都會記錄在連接跟蹤表中,包括tcp,udp,icmp等,一旦連接跟蹤表被填滿以后,就會發生丟包,導致網絡不穩定。
而我們的服務器確實打開了iptables防火墻,并且都是在網站流量非常高的時候經常會出現這個問題。這個問題的原因是由于web服務器收到了大量的連接,在啟用了iptables的情況下,iptables會把所有的連接都做鏈接跟蹤處理,這樣iptables就會有一個鏈接跟蹤表,當這個表滿的時候,就會出現上面的錯誤。
iptables的鏈接跟蹤表最大容量配置文件如下:
centos5 netfilter 參數配置文件:
/proc/sys/net/ipv4/netfilter/ip_conntrack_max或者/proc/sys/net/ipv4/ip_conntrack_max
centos6 netfilter 參數配置文件:
/proc/sys/net/netfilter/nf_conntrack_max
由于nf_conntrack 工作在3層,支持IPv4和IPv6,而ip_conntrack只支持IPv4,因此nf_conntrack模塊在Linux的2.6.15內核中被引入,而ip_conntrack在Linux的2.6.22內核被移除(centos6.x版本),因此不同版本的系統,配置文件也就不盡相同了。目前大多的ip_conntrack_*已被 nf_conntrack_* 取代,很多ip_conntrack_*僅僅是個軟鏈接,原先的ip_conntrack配置目錄/proc/sys/net/ipv4/netfilter/ 仍然存在,但是新的nf_conntrack在/proc/sys/net/netfilter/中,這樣做是為了能夠向下的兼容。
了解了配置文件的變化后,我們看看這個問題該如何解決,解?方法一般有兩個:
1、調整 /proc/ 下面的參數
可以增大適當conntrack 的條目,在CentOS5/RHEL 5下:
(1)運行
sysctl -w net.ipv4.netfilter.ip_conntrack_max=655360
(2).在 /etc/sysctl.conf 中加入:
net.ipv4.netfilter.ip_conntrack_max = 655360
(3).使其生效
sysctl -p
在CentOS 6 /RHEL6下:
(1)運行
sysctl -w net.nf_conntrack_max=100000
(2)在 /etc/sysctl.conf 中加入:
net.nf_conntrack_max = 100000
(3)使其生效
sysctl -p
2、不使用ip_conntrack模塊
在CentOS5/RHEL 5下:
不使用ip_conntrack,需要移除state模塊,因為使用該模塊需要加載ip_conntrack。確保iptables規則中沒有出現類似state模塊的規則,如果有的話將其移除:
然后注釋 /etc/sysconfig/iptables-config 中的:
IPTABLES_MODULES="ip_conntrack_netbios_ns"
最后移除ip_conntrack模塊:
[root@waiwei ipv4]# modprobe -r ip_conntrack_netbios_ns xt_state
在CentOS6/RHEL6下:
[root@waiwei ipv4]# modprobe -r nf_conntrack_ipv4 xt_state [root@waiwei ipv4]# modprobe -r nf_conntrack
現在 /proc/net/ 下面應該沒有nf_conntrack了。
兩種方法中,第一種簡單,但是治標不治本,第二種稍微麻煩,但是畢竟使用,大家可根據情況進行選擇。
原創文章,作者:Net 20-北京自由鳥,如若轉載,請注明出處:http://www.www58058.com/17451