qingheliuqingheliu.blog.chinaunix.net

why远比what重要!

  • 博客访问: 1460158
  • 博文数量: 610
  • 博客积分: 6356
  • 博客等级: 准将
  • 技术积分: 6225
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-23 10:54
个人简介

器量大者,福泽必厚

文章分类

全部博文(610)

文章存档

2017年(5)

2016年(40)

2015年(68)

2014年(129)

2013年(155)

2012年(66)

2011年(34)

2010年(55)

2009年(39)

2008年(19)

微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅

分类: LINUX


问题:zabbix 突然报警,vip 不通了,

解决方法:将vip 所在的机器的keepalived 服务给关闭,vip 则会飘到另外一台机器上,vip立即恢复正常!

后来查到是追踪表的问题的导致的!从网上找到追踪表的相关资料如下:
追踪表最大数目的确定:

nf_conntrack模块 :
在iptables不同的表中,都会用到nf_conntrack模块来进行连接跟踪,而对应nf_conntrack的数据库为/proc/net/nf_conntrack(rhel6/centos6)。 
   
有个简单的计算方式: 
conntrack_max=ramsize(bytes)/16384/(x/32) 

其中的x为你的系统地址位数,若操作系统为32位则x为32,若是64位x就等于64。其默认值为32768。如果你的操作系统为64位,8G内存,则nf_conntrack_max的为8192×1024×1024/16384/(64/32)=262144 

若使用中的连接跟踪数量超过了最大连接数量,超出的部分无法被防火墙所接受,也就无法去应用防火墙去使用了。如果超出了,在/var/log/messages文件中将会看到错误消息“nf_conntrack: table full,dropping packet”,所以如果你觉得数量不够了,就可以通过增加内存去扩大连接数量上限。 

而这个链接跟踪其实是有最大连接数量限制的。而其默认值会根据实际内存的大小而改变。

ip_conntrack: table full, dropping packet 

错误信息:
在启用了iptables 的服务器上,流量高的时候经常会出现下面的错误

 

ip_conntrack: table full, dropping packet


这个问题的原因是由于服务器收到了大量的连接,在启用了iptables的情况下,iptables会把所有的连接都做链接跟踪处理,这样iptables就会有一个链接跟踪表,当这个表满的时候,就会出现上面的错误。 

iptables
的链接跟踪表最大容量为 sysctl -a | grep net.nf_conntrack_max,链接碰到各种状态的超时后就会从表中删除。 

解決方法 

1.增加 ip_conntrack_max
复制代码

 

vim /etc/sysctl.conf

#添加如下

net.nf_conntrack_max = 102400

    

sysctl -p


2.iptables的raw表是不做数据包的链接跟踪处理的,并且优先级最高,我们可以把那些连接量非常大的链接加入到iptables raw表。
复制代码

 

 

iptables -t raw -A PREROUTING -d 1.2.3.4 -p tcp --dport 80 -j NOTRACK

iptables -A FORWARD -m state --state UNTRACKED -j ACCEPT

 

查看追踪表当前的数目:

 wc -l /proc/net/nf_conntrack

 

注意:在防火墙关闭的状态下,不要使用iptables -L -vnx来查看状态!因为这样会导致防火墙被启动,而且规则为空。虽然不会有任何拦截效果,但所有连接状态都会被记录,浪费资源且影响性能并可能导致防火墙主动丢包!

 

摘之阿里云:

现象:突然发现访问网站很慢,服务器的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 就会丢包,出现外部无法连接服务器的情况。


还遇到了问题:
阅读(2334) | 评论(0) | 转发(0) |
0

上一篇:centos7 下修改时区

下一篇:没有了

给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册