linux nf conntrack,nf_conntrack满之解决方法

问题:

没有占用多少流量,但是网络连接很慢,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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值