iptables的conntrack表满了导致访问网站很慢


关键词

linux iptables conntrack

摘要

iptables的conntrack表满了导致访问网站很慢
现象:突然发现访问网站很慢,服务器的cpu、内存和磁盘使用率都正常
  分析过程及解决方案:查询/var/log/message日志发现有这样的记录“ip_conntrack table full dropping packet”。kernel 用 ip_conntrack 模块来记录 iptables 网络包的状态,并保存到 table 里(这个 table 在内存里),如果网络状况繁忙,比如高连接,高并发连接等会导致逐步占用这个 table 可用空间,一般这个 table 很大不容易占满并且可以自己清理,table 的记录会一直呆在 table 里占用空间直到源 IP 发一个 RST 包,但是如果出现被攻击、错误的网络配置、有问题的路由/路由器、有问题的网卡等情况的时候,就会导致源 IP 发的这个 RST 包收不到,这样就积累在 table 里,越积累越多直到占满,满了以后 iptables 就会丢包,出现外部无法连接服务器的情况。
 
  解决方案:Iptables启动的是会在日志里提示当前的buckets和conntrack_max的值以及每条跟踪连接需要消耗多少内存:
  也就是说304MB内存将支持1048576条跟踪连接记录,所以需要按照服务器的内存大小来配置合适的值。
永久修改ip_conntrack_max和hashsize
1) 增大 ip_conntrack_max(设置为 2^20,默认值是 2^16=65536)
# vi /etc/sysctl.conf
net.ipv4.ip_conntrack_max = 1048576
2) 增大 hashsize (在i386架构上,HASHSIZE = CONNTRACK_MAX / 8)
# vi /etc/modprobe.conf
options ip_conntrack hashsize=131072
然后重启 iptables 服务,在 messages中可以看到参数已生效:
# service iptables restart

 

要饭二维码

洪哥写文章很苦逼,如果本文对您略有帮助,可以扫描下方二维码支持洪哥!金额随意,先行谢过!大家的支持是我前进的动力!

文章的版权

本文来源于互联网,如果文章侵犯了您的权宜,请与我们“splaybow(@)qq.com”联系,谢谢合作!

如果您在服务器运维、网络管理、网站或系统开发过程有需要提供收费服务,请加QQ:8771947!十年运维经验,帮您省钱、让您放心!
亲,如果有需要,先存起来,方便以后再看啊!加入收藏夹的话,按Ctrl+D

« sh脚本异常:/bin/sh^M:bad interpreter: No such file or directory Centos网络设置详解 »

相关文章:

在Linux上添加字体  (2018/9/1 11:53:09)

购物网站支付宝付款后跳转回来报错  (2015/3/18 15:52:24)

centos下安装nmap、sqlmap、metasploit  (2014/8/22 9:18:40)

Linux上极具杀伤力的破坏指令  (2014/8/18 8:53:22)

三步骤测试Linux主机是否连通  (2014/5/20 9:33:18)

Linux查看路由信息  (2014/5/8 15:01:06)

RHEL6.4搭建FTP服务器  (2014/4/29 10:16:55)

linux系统下设置网站404错误页  (2014/4/21 12:45:26)

OpenSSL安全公告  (2014/4/15 9:01:51)

系统管理员命令:sudo  (2014/4/14 11:06:49)