0

0

Linux tcp_rmem / tcp_wmem 的滑动窗口缓冲区经验值分层(min/default/max)

舞夢輝影

舞夢輝影

发布时间:2026-02-14 20:19:03

|

565人浏览过

|

来源于php中文网

原创

tcp_rmem和tcp_wmem三元组应按min default max设置,其中min为硬下限(通常4096),default决定初始窗口和慢启动行为,max需≥2×bdp且不超net.core.rmem_max/wmem_max。

linux tcp_rmem / tcp_wmem 的滑动窗口缓冲区经验值分层(min/default/max)

tcp\_rmem 和 tcp\_wmem 的三元组到底怎么填

Linux TCP 接收/发送缓冲区由 tcp_rmemtcp_wmem 控制,它们都是空格分隔的三个整数:min default max。这不是“最小值、默认值、最大值”的简单设定,而是一套动态调节策略——内核会根据 socket 当前状态(如 RTT、丢包、应用读写节奏)在这三者之间浮动调整实际缓冲区大小。

常见错误是直接抄网上“调大就快”的三元组,比如 4096 65536 16777216,结果在小带宽低延迟局域网里反而触发过度缓冲(bufferbloat),RTT 拉高、交互卡顿;或者在高吞吐长肥管道(long fat network)上因 max 不足被限速。

  • min 是每个 socket 初始化时的硬下限,也用于计算接收窗口初始通告值(min 太小会导致 SYN-ACK 窗口过小,影响建连后首波传输)
  • default 是 socket 创建时的起始值,也是 sysctl 默认生效值,但会被内核动态覆盖——它不等于“稳定运行值”
  • max 是单 socket 缓冲区可膨胀到的上限,受 net.core.rmem_max / net.core.wmem_max 约束(若后者更小,则以它为准)

不同网络场景下的经验值分层逻辑

没有放之四海皆准的数字,只有匹配链路特性的分层思路:关键看带宽 × 延迟积(BDP)。缓冲区至少要能装下 1–2 个 BDP 的数据,否则无法打满带宽;但也不能远超 BDP,否则排队延迟恶化。

示例对比:

依图语音开放平台
依图语音开放平台

依图语音开放平台

下载
局域网(1Gbps,0.1ms RTT)→ BDP ≈ 12.5KB  
长距离公网(100Mbps,50ms RTT)→ BDP ≈ 625KB  
数据中心 RDMA 网络(100Gbps,5μs RTT)→ BDP ≈ 62.5KB
  • 低延迟局域网(RTT 4096 16384 65536 —— max 控制在 64KB 内,避免冗余排队
  • 常规公网(RTT 20–100ms):4096 262144 4194304(4K/256K/4M)—— 覆盖百兆级 BDP,default 设为 256K 避免慢启动期窗口过小
  • 高吞吐长肥管道(如科研网络、云间专线):4096 1048576 16777216(4K/1M/16M)—— max 必须 ≥ 2×BDP,且需同步调大 net.core.rmem_max

为什么 default 值常被忽略却最关键

default 不是“建议值”,而是 TCP 栈初始化 socket 时真正写入 sk->sk_rcvbuf / sk->sk_sndbuf 的初始值。它直接影响:三次握手窗口通告、慢启动初始拥塞窗口(cwnd)增长步长、应用第一次 read()/write() 的缓冲能力

典型坑:把 default 设得太低(如沿用老系统默认的 212992 = 208KB),在千兆以上链路上,TCP 连接建立后头几轮 RTT 就因窗口不足而停滞;设得太高(如 4M),又会让小连接白白占用内存、触发更激进的内存压力回收。

  • 现代内核(5.4+)对 default 更敏感,尤其启用了 tcp_slow_start_after_idle=0 时,该值决定空闲后重启的起点
  • 若应用使用 setsockopt(..., SO_RCVBUF, ...) 手动设缓冲区,会绕过 tcp_rmemdefault,但受限于 net.core.rmem_max
  • 检查当前生效值:读 /proc/sys/net/ipv4/tcp_rmem,注意第三列是 max,不是全局上限

改完必须验证的三件事

修改 /etc/sysctl.conf 后执行 sysctl -p 只是加载参数,不代表所有 socket 都立刻按新规则运行。真实效果取决于连接何时建立、路径 MTU、是否启用 tcp_window_scaling 等。

  • 确认 tcp_window_scaling 已开启(cat /proc/sys/net/ipv4/tcp_window_scaling 应为 1),否则窗口无法突破 64KB,max 再大也无效
  • ss -i 查看具体连接的 rcv_spacesnd_space,它反映当前动态缓冲区大小,不是配置值
  • 压测时监控 /proc/net/snmp 中的 TcpExt: TCPAutoCorkingTcpExt: TCPOrigDataSent,若前者突增,说明缓冲区过大导致内核频繁合包,反而降低效率

缓冲区调优永远在“填满管道”和“不让数据排队”之间找平衡点,而这个点随流量模式实时漂移。最稳的做法是先按 BDP 设好 max,再用 default 控制冷启动行为,min 则保持 4K 不动——它只在极低内存或特殊协议栈路径里起作用,别乱动。

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

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

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

417

2023.07.18

堆和栈区别
堆和栈区别

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

588

2023.08.10

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

228

2023.12.07

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1520

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

714

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

300

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

791

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

584

2023.07.06

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

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

145

2026.02.13

热门下载

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

精品课程

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

共48课时 | 9.1万人学习

Git 教程
Git 教程

共21课时 | 3.6万人学习

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

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