概述
问题:
没有占用多少流量,但是网络连接很慢,ping超时。已发现被大量不同的机器访问导致tcp连接数非常高,nf_conntrack满了
nf_conntrack满之解决方法
(2016-08-09 17:27:36)
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
最后
以上就是爱撒娇未来为你收集整理的linux nf conntrack,nf_conntrack满之解决方法的全部内容,希望文章能够帮你解决linux nf conntrack,nf_conntrack满之解决方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复