ip_conntrack_max满导致无法建立链接

分类:技术 3.91k浏览

一台访问量较高的服务器出现严重的丢包和无法建立链接的情况,已经确认数据中心网络没有问题,怀疑服务器自身出现问题。

进入服务器发现网卡并没有error,内部运行的web服务均正常,但是仍然会出现断流和丢包现象,初步怀疑是在系统方面。

一、执行demsg

发现大量“VE0: nf_conntrack: table full, dropping packet.”的错误提示,确定是ip_conntrack跟踪连接满导致网络丢包问题。

二、统计表的情况

cat /proc/net/nf_conntrack | wc -l

默认max=65536。可以先重启iptables 恢复正常连接,然后修改参数

三、修改syctl参数

vi /etc/sysctl.conf

net.nf_conntrack_max = 655360   #加十倍,根据自身服务器内存进行修改
net.netfilter.nf_conntrack_tcp_timeout_established = 1200   #设置timeout时间

sysctl -p /etc/sysctl.conf

四、另外参考

#加大 ip_conntrack_max 值 net.ipv4.ip_conntrack_max = 393216
net.ipv4.netfilter.ip_conntrack_max = 393216
#降低 ip_conntrack timeout时间
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 300
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120

增加完以上内容后,通过sysctl -p 使配置生效 。不过该方法缺点:一是重启iptables后,ip_conntrack_max值又会变成65535默认值,需要重新sysctl -p

参考文献:

http://blog.51cto.com/ixdba/1737642

https://blog.csdn.net/yanggd1987/article/details/54924725