分类: LINUX
2010-12-01 14:23:46
现象:ip_conntrack: table full, dropping packet.
解决方法:
IP_conntrack表示连接跟踪(conntrack database),代表NAT机器跟踪连接的数目,连接跟踪表能容纳多少记录是被一个变量控制的,它可由内核中的ip- sysctl函数设置。每一个跟踪连接表会占用350字节的内核存储空间,时间一长就会把默认的空间填满,那么默认空间时多少?我以redhat为例在内存为64MB的机器上时4096,内存为128MB是 8192,内存为256MB是16376,那末就能在/proc/sys/net/ipv4/ip_conntrack_max里查看、设置。
例如:增加到81920,可以用以下命令:
echo "81920" > /proc/sys/net/ipv4/ip_conntrack_max
那样设置是不会保存的,要重启后保存可以在/etc/sysctl.conf中加:
net.ipv4.ip_conntract_max =81920
按照此方法改变后一切正常,要是在满了可以加大其值.
显示当前的会话数:
cat /proc/net/ip_conntrack | wc -l
显示系统目前配置的最大 conntrack 数:
cat /proc/sys/net/ipv4/ip_conntrack_max
# 一旦前者的数字大于后者时,系统就报错,解决办法:
echo “N” > /proc/sys/net/ipv4/ip_conntrack_max
# 然后写入 /etc/sysctl.conf
sys.net.ipv4.ip_conntrack_max = N
修改/proc/sys/net/ipv4/下的一些参数...不让连接存活的时间过长,因为很多都只是http,短连接接到响应就关闭连接了,但是ip_conntrack仍然需要保存.