ip_conntrack: table full, dropping packet

今早发现cacti报警,其中一台服务器宕机。
检查了服务器的网络流量正常,系统负载正常,应该不存在snmp timeout的情况。

于是查看cacti的日志,发现日志已经停用很久了。。。
之后查看了message日志,发现了N多ip_conntrack: table full, dropping packet的信息,且ip都是这台报警的服务器。
conntrack:系统会为每一个网络连接建立一条记录,可以在/proc/net/ip_conntrack里看到。
ip_conntrack是这个记录表里的指针。
当表满的时候则会出现丢包,也就是这个报错了。

于是开始优化系统设置:
net.ipv4.netfilter.ip_conntrack_max = 524288
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180
net.ipv4.neigh.default.gc_stale_time = 120
net.ipv4.neigh.default.gc_thresh1 = 1024
net.ipv4.neigh.default.gc_thresh2 = 4096
net.ipv4.neigh.default.gc_thresh3 = 8192
net.ipv4.netfilter.ip_conntrack_udp_timeout = 60

ip_conntrack_max为记录最大数,这个数值需要根据服务器内存来计算得出,并且不要一下设置满。计算公式在网上可以查到,http://blog.csdn.net/dog250/article/details/7107537,推荐看看这位仁兄的见解。

ip_conntrack_tcp_timeout_established默认是5天,单位是秒。这个5天的是系统的经验值,原则上不需要改的,推荐看看http://www.2cto.com/os/201202/121014.html,这里按照实际需求做修改了。


sysctl -p
生效


现在没有报警了,还需要继续监控。

 

你可能感兴趣的:(cacti,ip_conntrack)