今天一台服务器,由于访问量特别大,导致服务器丢包很严重,后来发现一个奇特的事情,就是开启IPTABLES丢包严重,关掉IPTABLES就不丢包了,在网上也找了不少资料,最后发现是由于HASHSIZE值太小造成的。现在我就来分享一下配置HASHSIZE的方法。
在启动CentOS系统后,直接编辑/etc/modprobe.conf文件,然后在最后面加一行:
options ip_conntrack hashsize=100000
如果你使用的CentOS系统是之前版本的Fedora或其他发行版本的Linux系统,也有可能需要加的是
options nf_conntrack hashsize=100000
这个取决于你的CentOS系统里模块名到底是ip_conntrack还是nf_conntrack,我就被这模块名不同搞晕了。把Fedora的写法放到CentOS里去,结果怎么重新启动HASHSIZE值就是没变化,后来经过ELM提醒,也可以通过lsmod查看模块列表来看出来你的模块到底是ip_conntrack还是nf_conntrack,才发现CentOS里模块叫ip_conntrack,而在Fedora里这个模块名叫 nf_conntrack。
[root@proxy proc]# lsmod | grep conn
ip_conntrack_netbios_ns 6977 0
ip_conntrack 53281 4 ip_conntrack_netbios_ns,iptable_nat,ip_nat,xt_state
nfnetlink 10713 2 ip_nat,ip_conntrack
修改完以后重新启动CentOS系统,然后可以看到你的hashsize值就被改了
[root@proxy proc]# more /proc/sys/net/ipv4/netfilter/ip_conntrack_buckets
100000
[root@proxy proc]# more /proc/sys/net/ipv4/netfilter/ip_conntrack_max
800000
这样修改完之后,不需要额外再去修改ip_conntrack_max值了,ip_conntrack_max的值会被自动设置为HASHSIZE值的8倍。
如果是在centos 6.x版本的系统,就没有modprobe.conf这个文件,你需要在/etc/modprobe.d目录下新建一个local.conf文件,编辑local.conf文件在里面加上options nf_conntrack hashsize=100000就可以了。
转载请注明:IT运维空间 » linux » CentOS系统中修改系统HASHSIZE大小
发表评论