0

0

tcp_tw_recycle 替代的 tcp_timestamps 与 net.netfilter.nf_conntrack_tcp_timeout_established

冷漠man

冷漠man

发布时间:2026-02-13 20:31:10

|

523人浏览过

|

来源于php中文网

原创

tcp_timestamps 不能随便关闭,因其支撑 paws 机制,关闭后在高带宽长肥管道(rtt>1s)下会导致合法数据包被丢弃,引发连接重置或大量重传;应保持开启(=1),除非确认所有客户端均在同局域网且 rtt 极短。

tcp_tw_recycle 替代的 tcp_timestamps 与 net.netfilter.nf_conntrack_tcp_timeout_established

tcp_tw_recycle 被移除后,为什么 tcp_timestamps 不能随便关?

因为 tcp_timestamps 不只是为 tcp_tw_recycle 服务的——它直接影响 PAWS(Protect Against Wrapped Sequence numbers)机制。关闭它,在高带宽、长肥管道(如跨公网、RTT > 1s)场景下,会导致合法数据包被内核丢弃,表现为连接随机重置、大量 retransmissionconnection reset by peer

实操建议:

  • tcp_timestamps = 1 应保持开启,除非你 100% 确认所有客户端都在同一个局域网、RTT
  • 不要为了“解决 TIME_WAIT 多”而关它——那是治标害本
  • 检查是否真有 PAWS 丢包:抓包看是否有 [TCP Dup ACK] 后紧跟 [TCP RST],同时 /proc/net/netstatPAWSPassivePAWSActive 计数明显下降

替代 tcp_tw_recycle 的真正有效手段是调 net.netfilter.nf_conntrack_tcp_timeout_established

这个参数控制 conntrack 表里 ESTABLISHED 状态连接的超时时间,默认 432000 秒(5 天)。它和 tcp_tw_recycle 完全无关,但常被误认为“同类”,其实它是 netfilter 层的连接跟踪生命周期开关,影响的是 NAT、防火墙、Docker 等依赖 conntrack 的场景。

实操建议:

  • 若你用 Docker/K8s 或做了 SNAT,且发现 nf_conntrack_count 接近 nf_conntrack_max,连接新建失败(Connection refusedCannot assign requested address),才需要调它
  • 合理值一般设为 300–1200 秒(5–20 分钟),具体看业务平均连接持续时间;设太低会导致短连接被提前踢出 conntrack 表,引发 “No route to host” 或重复 SYN
  • 改完必须 reload conntrack:运行 conntrack -F 清空旧表(注意这会中断已有连接)

TIME_WAIT 真正该管的不是回收策略,而是源头连接管理

tcp_tw_recycle 本质是用有风险的激进回收换短期资源释放,现代内核(>= 4.12)直接删了它,就是因为代价远大于收益。现在要压 TIME_WAIT,得从应用层和协议层入手。

实操建议:

  • 服务端避免主动关闭连接(即让客户端发 FIN);HTTP/1.1 加 Connection: keep-alive,gRPC 默认复用连接
  • 客户端用连接池(如 Go 的 http.Transport.MaxIdleConns、Python 的 urllib3.PoolManager),别每次请求都新建 socket
  • 确需快速复用本地端口时,设 SO_LINGER 为 0(慎用!只适用于明确知道对端已关闭的场景),或启用 net.ipv4.tcp_fin_timeout(仅影响 FIN_WAIT_2,不直接减少 TIME_WAIT 数量)

检查当前生效值与实际瓶颈,别只盯 sysctl 参数

很多问题根本不在 TCP 栈参数,而在 conntrack 表满、socket 耗尽、或应用没正确 close fd。盲目调参反而掩盖真实瓶颈。

实操建议:

  • 查 conntrack 压力:cat /proc/sys/net/netfilter/nf_conntrack_countcat /proc/sys/net/netfilter/nf_conntrack_max
  • 查 TIME_WAIT 数量:ss -s | grep -i time_wait,再用 ss -tan state time-wait sport = :<port></port> 看具体端口分布
  • 查 socket 资源限制:cat /proc/<pid>/limits | grep "Max open files"</pid>,以及 ulimit -n
  • 确认是否真有连接失败:看 /proc/net/snmpTcpAttemptFailsTcpEstabResets 是否异常升高

最常被忽略的一点:net.netfilter.nf_conntrack_tcp_timeout_established 只在启用了 conntrack(即加载了 nf_conntrack 模块)且实际用到它(比如 iptables 有 state 规则、Docker 运行中)时才起作用。裸机上没开 NAT 或防火墙规则,调它完全无效。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

414

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

588

2023.08.10

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

265

2023.07.24

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

511

2024.04.08

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

408

2024.04.08

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

446

2024.04.08

Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

10

2026.02.11

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

460

2023.11.09

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

23

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 9.4万人学习

python编程入门系列图文教程
python编程入门系列图文教程

共65课时 | 24.8万人学习

vscode其实很简单
vscode其实很简单

共72课时 | 29.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号