nf_conntrack模块导致服务器Drop Packet

前言

系统日志中发现 nf_conntracck: table full,dropping packet信息(服务器为GP数据库)
这说明系统接到了大量的连接请求,但是系统的连接跟踪表已经满了,无法再记录新的连接了。这时候,系统会丢弃新的连接请求。
然后对nf_conntracck: table full,dropping packet 的报信息在GP官方文档中也有出现
需要在操作系统层面对netfilter.ip_conntrack_max的值进行修改
net.ipv4.netfilter.ip_conntrack_max= “x”

排查

GP数据库集群中有部分服务器均有如下报错

cat /var/log/message | grep nf

nf_conntrack模块导致服务器Drop Packet插图

分析丢包原因:服务器访问量过大,内核iptables的跟踪表 nf_conntrack 相关参数配置不合理,导致 IP 包被丢掉,tcp连接无法建立

 

方法一:不推荐

根据实际环境调整如下参数

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

永久修改其配置参数:在 /etc/sysctl.conf添加
net.netfilter.nf_conntrack_max = 508576即可 (范围值之内)

保存退出 sysctl -p

max值需不断调优,当一直丢包之后适量调大

生产环境我们调整到了200w还是会drop packet

方法二:推荐

nf_conntrack模块导致服务器Drop Packet插图1

卸载模块的话依赖非常难搞,比如图中框中的依赖模块数量,有的290个,所以需要执行如下指令:

yum -y install iptables-services
systemctl start iptables
systemctl stop iptables
lsmod | grep iptables
yum -y remove iptables-services
lsmod |  grep  nf_conntrack

执行完毕后会出现两种情况

  • nf_conntrack模块直接消失(如下图)

 

nf_conntrack模块导致服务器Drop Packet插图2

  • 如果不是上图中的,则按照下列命令执行(具体还要看模块名称)

 

modprobe -r nf_conntrack_ipv4 && modprbe -r xt_conntrack

如有任何问题,可添加主页微信进行沟通进行支持 

Wx:Air_WX_

QQ:2469329338

 

红帽官方文档:

ip_conntrack or nf_conntrack : table full, dropping packet 
https://access.redhat.com/solutions/8721
阅读剩余
THE END
诺言博客