记录前因:
K8S部署的集群,最近遇到域名解析失败情况,查看coredns日志,没有明显问题。 解析报错: connection timed out ; no servers could be reached
重启集群服务,解析没有问题, 基本确认跟某个业务服务有关联
解决过程:
查看跟踪连接数:sysctl net.netfilter.nf_conntrack_count
可以通过查看跟踪连接详细信息: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