首页/系统/Linux 内核与性能调优速查/net.core.rmem_max / wmem_max 套接字缓冲上限
sysctl 内核参数72 条

net.core.rmem_max / wmem_max 套接字缓冲上限

单个套接字接收/发送缓冲区的硬上限(默认各 212992 字节);应用 setsockopt 与自动调优都受它封顶,长肥管道场景需要提高。

套接字缓冲上限是什么

net.core.rmem_max 与 net.core.wmem_max 分别是单个套接字接收缓冲与发送缓冲的硬上限,默认各为 212992 字节(约 208KB)。应用调用 setsockopt 设置 SO_RCVBUF 或 SO_SNDBUF 时,请求值会被这两个上限截断;接收侧的自动调优另有自己的上限,来自 tcp_rmem 的第三个值。因此排查「缓冲调不大」的问题时,要先分清走的是应用显式设置还是内核自动调优这两条路径。

基本信息

参数net.core.rmem_max、net.core.wmem_max
默认值212992 字节(约 208KB)
约束对象应用通过 setsockopt 设置的单个套接字缓冲上限
与 TCP 参数的边界接收自动调优上限来自 tcp_rmem 第三值,发送来自 tcp_wmem 第三值
适用协议TCP、UDP 与 Unix 域套接字等;本条目侧重网络套接字
观测方式ss -tmi 查看连接的缓冲与队列使用情况

典型使用场景

  • 文件传输与跨机房同步:需要单连接大吞吐时放宽缓冲上限
  • UDP 接收端:应用自设较大接收缓冲防止突发丢包,超过上限会被截断
  • 排查缓冲设置无效:应用把套接字缓冲设得很大却毫无效果,先核对这两个上限
  • 内存评估:为高连接数服务放宽上限前,估算连接数与单连接缓冲的乘积
  • 对比验证:确认库或框架是否在内部设置套接字选项,避免误判内核行为

查看与调整

查看与调整
sysctl net.core.rmem_max net.core.wmem_max       # 读两个上限
sysctl -w net.core.rmem_max=16777216             # 放宽接收上限
sysctl -w net.core.wmem_max=16777216             # 放宽发送上限
sysctl net.ipv4.tcp_rmem net.ipv4.tcp_wmem       # 核对自动调优的上下限
ss -tmi state established | head                 # 观察缓冲与队列使用

落盘与回读

落盘与回读
# /etc/sysctl.d/99-net-tuning.conf
net.core.rmem_max = 16777216    # 单套接字接收缓冲上限
net.core.wmem_max = 16777216    # 单套接字发送缓冲上限
# 回读命令:sysctl net.core.rmem_max net.core.wmem_max

两条路径对照

场景实际生效的上限注意点
应用显式 setsockoptnet.core.rmem_max / wmem_max请求值超过上限会被静默截断
内核自动调优tcp_rmem 与 tcp_wmem 的第三个值与 core 上限是两套边界,容易漏改
UDP 接收net.core.rmem_max无自动调优,完全依赖应用设置
发送积压观察ss 的 Send-Q 与内核缓冲统计判断是应用写快还是对端收得慢
只改上限不会自动提升实际缓冲:应用没显式设置时,接收侧缓冲由内核按链路情况自动调整,上限仍由 tcp_rmem 决定;发送侧同理。放宽 core 上限只是让应用的大额请求不再被截断。
放宽上限会抬高内存峰值:缓冲按使用量增长,但大量并发连接同时吃满时,内存占用等于连接数乘以单连接缓冲。调整前后都应观察内存与连接数的变化趋势。

易错点

  • 只改 core 上限不核对 tcp_rmem 与 tcp_wmem:自动调优路径的上限没变,效果与预期不符
  • 以为改了就立刻生效:套接字缓冲在连接建立时确定,存量连接不受影响
  • 忽略应用自身设置:框架已显式设置缓冲时,内核默认值无关紧要,需从应用配置入手
  • 高连接数服务盲目放宽上限:内存峰值成倍上升,可能触发 OOM
  • 把发送缓冲加大当作提速手段:对端处理不过来时缓冲只是换个地方排队,延迟反而升高

数据来源与参考

  • Linux 内核 Documentation/admin-guide/sysctl/net.rst
  • man 7 socket(SO_RCVBUF/SO_SNDBUF)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌