记录前因:
K8S部署的集群,最近遇到域名解析失败情况,查看coredns日志,没有明显问题。 解析报错: connection timed out ; no servers could be reached
重启集群服务,解析没有问题, 基本确认跟某个业务服务有关联
解决过程:
查看跟踪连接数:sysctl net.netfilter.nf_conntrack_count
message会有日志: nf_conntrack: table full, dropping packet
可以通过查看跟踪连接详细信息:cat /proc/net/nf_conntrack去统计哪个服务导致
优化对应业务服务解决此次问题
学习
认识连接跟踪:
nf_conntrack: 连接跟踪 ,同时支持ipv4和ipv6,用于跟踪连接状态,供其他模块使用。 主要用户linux的NAT和状态防火墙
查看状态:
1.当前跟踪连接详情:cat /proc/net/nf_conntrack
格式说明:
网络层协议名、网络层协议编号、传输层协议名、传输层协议编号、记录失效前剩余秒数、连接状态(不是所有协议都有),之后都是key=value或flag格式,1行里最多2个同名key,第1次出现的来自请求,第2次出现的来自响应
2.跟踪连接数
sysctl net.netfilter.nf_conntrack_count
3.最大跟踪连接数
dmesg | grep conntrack
cat /proc/sys/net/netfilter/nf_conntrack_max
cat /proc/sys/net/nf_conntrack_max
注:哈希表大小(只读)(64位系统、8G内存默认 65536,16G翻倍,如此类推)net.netfilter.nf_conntrack_buckets;默认最大跟踪连接数,默认 nf_conntrack_buckets * 4
哈希表使用情况:
grep conntrack /proc/slabinfo
根据需求调整:
连接跟踪调整:
临时调整(重启节点会丢失)
sysctl -w net.netfilter.nf_conntrack_max=1048576
sysctl -w net.nf_conntrack_max=1048576
永久调整:
echo 'net.netfilter.nf_conntrack_max' = 1048576 >> /etc/sysctl.conf
echo 'net.nf_conntrack_max = 1048576' >> /etc/sysctl.conf
sysctl -p
哈希表大小调整:
临时生效:
echo 262144 > /sys/module/nf_conntrack/parameters/hashsize
永久生效
echo 'options nf_conntrack hashsize=262144' >> /etc/modprobe.d/iptables.conf
响应时间调整:
临时生效
# 主动方的最后1个状态。默认120秒
sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_fin_wait=30
sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_time_wait=30
# CLOSE_WAIT是被动方收到FIN发ACK,然后会转到LAST_ACK发FIN,除非程序写得有问题,正常来说这状态持续时间很短。#默认 60 秒
sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_close_wait=15
# 理论上不用这么长,不小于 net.ipv4.tcp_keepalive_time 就行了。默认 432000 秒(5天)
sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established=300
永久生效
# 修改内核配置文件(/etc/sysctl.conf)
net.netfilter.nf_conntrack_tcp_timeout_fin_wait=30
net.netfilter.nf_conntrack_tcp_timeout_time_wait=30
net.netfilter.nf_conntrack_tcp_timeout_close_wait=15
net.netfilter.nf_conntrack_tcp_timeout_established=300
# 如果要马上应用配置文件里的设置:
sysctl -p /etc/sysctl.conf
标签:sysctl,网络,nf,tcp,conntrack,linux,net,netfilter From: https://www.cnblogs.com/aroin/p/17581959.html