首页/系统/Linux 内核与性能调优速查/nf_conntrack_tcp_timeout_established 跟踪超时
sysctl 内核参数72 条

nf_conntrack_tcp_timeout_established 跟踪超时

连接跟踪中 ESTABLISHED 表项的默认存活时间为 432000 秒(5 天),长连接多的网关会长期占用表容量。

跟踪超时参数是什么

net.netfilter.nf_conntrack_tcp_timeout_established 决定连接跟踪表中处于 ESTABLISHED 状态的表项能存活多久,默认 432000 秒,也就是 5 天。跟踪表按状态设置不同的超时:刚建立、半开、关闭中等状态各有独立的超时参数,一起决定表项的回收速度。这类参数对 NAT 网关尤其重要:只要表项还在,地址转换关系就保留;表项被清理后,原连接即使还有流量也会被当作新连接处理。

基本信息

参数net.netfilter.nf_conntrack_tcp_timeout_established
默认值432000 秒(5 天)
同族参数tcp_timeout_syn_sent、syn_recv、fin_wait、close、close_wait、last_ack、time_wait 等
所在位置/proc/sys/net/netfilter/ 下,需先加载连接跟踪模块
伙伴参数net.netfilter.nf_conntrack_max 决定表的容量上限
影响超时越长,空闲连接占用的表项保留越久

典型使用场景

  • 网关表项长期占用:大量空闲长连接占住容量,需要评估是否缩短超时
  • 配合应用心跳:确认应用心跳间隔小于跟踪超时,避免心跳前映射被清理
  • NAT 排障:连接在空闲一段时间后失败,怀疑是映射被提前回收
  • 容量估算:按并发连接数与超时时间估算表项的平均占用规模
  • 多参数协同:关闭阶段的超时同样影响回收速度,需要整体评估

查看与调整

查看与调整
sysctl net.netfilter.nf_conntrack_tcp_timeout_established   # 读当前值
ls /proc/sys/net/netfilter/ | grep timeout                    # 列出全部超时参数
cat /proc/sys/net/netfilter/nf_conntrack_count                # 当前表项数
sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established=86400   # 临时改为 1 天
conntrack -L -p tcp 2>/dev/null | head                        # 需要工具时查看表项详情

落盘与回读

落盘与回读
# /etc/sysctl.d/99-conntrack.conf
net.netfilter.nf_conntrack_tcp_timeout_established = 86400   # 缩短空闲长连接占用
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 60         # 关闭阶段超时
# 回读命令:sysctl net.netfilter.nf_conntrack_tcp_timeout_established

状态与超时对照

状态典型默认值影响
established5 天长连接表项占用时间,容量压力主要来源
syn_sent / syn_recv分钟级握手阶段的表项回收速度
fin_wait / close_wait分钟级关闭过程各阶段的残留时间
time_wait秒级到分钟级回收快,通常不是容量瓶颈
调低超时会让空闲时间较长的连接在应用无感知的情况下失去映射,之后报文可能被当作新连接处理而被拒绝。应用侧有心跳保活的场景,心跳间隔必须明显小于该超时值。
改完之后要用实际数据验证:观察表项数量的变化趋势与业务侧是否出现连接异常,而不是只看参数回读值。验证窗口应覆盖业务的空闲周期,否则难以发现问题。

易错点

  • 只改 established 一项:握手与关闭阶段的超时同样影响回收速度,需要整体评估
  • 超时小于应用心跳间隔:空闲映射被提前清理,业务表现为无规律的连接失败
  • 改完不观察实际效果:表项数量与业务异常都要在新窗口期内确认
  • 忽略模块加载状态:连接跟踪模块未加载时相关参数路径不存在,写入会失败
  • 缩短超时以求加速回收却未同步评估对手续中连接的影响:抓包可见异常的连接重置

数据来源与参考

  • Linux 内核 Documentation/networking/nf_conntrack-sysctl.rst
  • Linux 内核源码 net/netfilter/nf_conntrack_proto_tcp.c
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌