服务器出现丢包现象:kernel: nf_conntrack: table full, dropping packet

已解决!

创作者:吴仔汕

查看服务器日志#tailf /var/log/message的时候,发现出现很多这种报错:
kernel: nf_conntrack: table full, dropping packet

导致服务的连接异常,client端与server端无法建立连接

丢包原因:服务器访问量过大,内核iptables的跟踪表 nf_conntrack 相关参数配置不合理,导致 IP 包被丢掉,tcp连接无法建立
解决方法:
①丢包现象首先考虑防火墙问题,查看防火墙是关闭状态;
②再考虑iptables跟踪表中netfilter模块的 当前跟踪连接数 与最大跟踪连接数 这两个参数 (丢包现象大都与跟踪连接数有关),看是否超限了:

使用命令查看:sysctl -a | grep conntrack
对比

net.netfilter.nf_conntrack_count 和 net.netfilter.nf_conntrack_max
net.netfilter.nf_conntrack_max 最大跟踪连接数 默认为65536

发现我的133那台机器的连接数达到了26万,而最大连接数才设置到8万
其哈希最佳范围是 262144 ~ 1048576

永久修改其配置参数:在 /etc/sysctl.conf添加
net.netfilter.nf_conntrack_max = 508576即可 (范围值之内)
或者 echo 508576 > /proc/sys/net/netfilter/nf_conntrack_max
sysctl -p 生效

猜你喜欢

转载自blog.csdn.net/Zisson_no_error/article/details/117387587