前言
系统日志中发现 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
分析丢包原因:服务器访问量过大,内核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
方法二:推荐
卸载模块的话依赖非常难搞,比如图中框中的依赖模块数量,有的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模块直接消失(如下图)
- 如果不是上图中的,则按照下列命令执行(具体还要看模块名称)
• modprobe -r nf_conntrack_ipv4 && modprbe -r xt_conntrack
如有任何问题,可添加主页微信进行沟通进行支持
Wx:Air_WX_
QQ:2469329338
红帽官方文档:
ip_conntrack or nf_conntrack : table full, dropping packet