美文网首页
Linux内核参数之nf_conntrack

Linux内核参数之nf_conntrack

作者: 跑腿打杂临时工 | 来源:发表于2020-10-30 10:59 被阅读0次

问题描述

近日线下测试环境的一个cloudstack计算节点上的虚拟机出现频繁的丢包情况,经过排查日志发现这个计算节点的包被丢弃,日志信息如下:

Oct 29 16:18:14 a2 kernel: __ratelimit: 60 callbacks suppressed
Oct 29 16:18:14 a2 kernel: nf_conntrack: table full, dropping packet.
Oct 29 16:18:14 a2 kernel: nf_conntrack: table full, dropping packet.
Oct 29 16:18:14 a2 kernel: nf_conntrack: table full, dropping packet.
Oct 29 16:18:14 a2 kernel: nf_conntrack: table full, dropping packet.
Oct 29 16:18:14 a2 kernel: nf_conntrack: table full, dropping packet.
Oct 29 16:18:14 a2 kernel: nf_conntrack: table full, dropping packet.
Oct 29 16:18:14 a2 kernel: nf_conntrack: table full, dropping packet.
Oct 29 16:18:14 a2 kernel: nf_conntrack: table full, dropping packet.
Oct 29 16:18:14 a2 kernel: nf_conntrack: table full, dropping packet.
Oct 29 16:18:15 a2 kernel: nf_conntrack: table full, dropping packet.

查询这个错误是因为连接数过高引起的,可以调整nf_conntrack内核参数进行解决。

查看优化相关参数

既然找到了原因,那么我们可以查看并且优化相关参数,默认的net.netfilter.nf_conntrack_max是65536,果然我们机器是默认值。

[root@a2 ~]# sysctl net.netfilter.nf_conntrack_max
net.netfilter.nf_conntrack_max = 65536

那么这个值设置多少合理呢?我在网上找到一个计算公式,我们服务器是512G内存64位系统,计算格式如下:

net.netfilter.nf_conntrack_max = 512*1024*1024*1024/16384/2 = 16777216

优化内核参数。

echo net.ipv4.netfilter.ip_conntrack_max = 16777216 >> /etc/sysctl.conf
sysctl -p

nf_conntrack还有些相关的参数可以进行优化,这些参数我们在之前已经做过优化了,如下:

net.netfilter.ip_conntrack_tcp_timeout_established = 1800
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120

相关文章

网友评论

      本文标题:Linux内核参数之nf_conntrack

      本文链接:https://www.haomeiwen.com/subject/rrnrvktx.html