最新消息:时间抓起来说是金子,抓不住就是流水。

CentOS系统中修改系统HASHSIZE大小

LINUX技术 老子黑牵翻 6823浏览 0评论

        今天一台服务器,由于访问量特别大,导致服务器丢包很严重,后来发现一个奇特的事情,就是开启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就可以了。

转载请注明:LINUX服务器运维架构技术分享 » CentOS系统中修改系统HASHSIZE大小

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址