0

0

"TCP: out of memory -- consider tuning tcp_mem" 出现后的参数推荐组合

冰川箭仙

冰川箭仙

发布时间:2026-01-25 19:25:02

|

279人浏览过

|

来源于php中文网

原创

应直接调高 net.ipv4.tcp_mem 三值(单位:页),而非增大 tcp_rmem/tcp_wmem;low 设为 sockstat 中 TCP: mem 峰值的 0.7–0.8 倍,pressure 为 low×1.2~1.3,high ≥ 峰值1.5倍且≤物理内存15%。

\

直接改 net.ipv4.tcp_mem 三值,别碰默认缓冲区大小

报错本质是 TCP 全局内存用量超了 high 阈值,触发内核丢包/拒连。此时最有效、最安全的干预就是调高 net.ipv4.tcp_mem 的三个页数(单位:页,1页=4KB),而不是盲目拉高 tcp_rmemtcp_wmem——后者只会让单连接更吃内存,反而加速触达上限。

  • low:设为当前 /proc/net/sockstatTCP: mem 峰值的 0.7–0.8 倍(换算成页);太低会过早进入压力模式,影响吞吐
  • pressure:建议设为 low × 1.2~1.3,留出平滑收缩空间;不要和 low 太接近,否则缓冲区频繁抖动
  • high:必须 ≥ 当前峰值的 1.5 倍(页),且不超过总物理内存的 15%(例如 64GB 内存 → ≤ 9.6GB ≈ 2,400,000 页);设太高可能挤占 page cache,影响磁盘 IO

典型场景推荐值(按内存容量粗略划分)

以下数值单位均为「页」,已换算为 4KB 每页,适用于常规高并发服务(如 Web API、消息代理),非容器化裸机环境:

  • 16GB 内存:net.ipv4.tcp_mem = 131072 174762 262144(≈ 512MB / 682MB / 1024MB)
  • 32GB 内存:net.ipv4.tcp_mem = 262144 349525 524288(≈ 1GB / 1.36GB / 2GB)
  • 64GB 内存:net.ipv4.tcp_mem = 524288 699050 1048576(≈ 2GB / 2.72GB / 4GB)

注意:银河麒麟等国产系统出厂值常低至 25401 33869 50802(≈ 100MB / 133MB / 200MB),远不够万级连接,必须调。

配套必须调的两个硬上限

tcp_mem 是全局页数限制,但单 socket 缓冲区若被应用层用 setsockopt(SO_RCVBUF) 拉得过大,仍可能绕过压力控制。因此要同步收紧上限:

Mulan AI
Mulan AI

画布式AI视频创作平台,轻松制作爆款视频

下载
  • 确保 net.core.rmem_maxnet.ipv4.tcp_rmem[2](即 TCP 读缓存最大值),否则 tcp_rmem[2] 实际无效
  • 同理,net.core.wmem_maxnet.ipv4.tcp_wmem[2]
  • 推荐组合(单位字节):net.core.rmem_max = 134217728(128MB),net.core.wmem_max = 134217728

这两个值不建议超过 256MB,否则可能引发 skb 分配失败或 soft lockup。

验证是否生效 + 容易踩的坑

改完 /etc/sysctl.conf 后必须执行 sysctl -p,然后看实时效果:

  • 查当前用量:awk '/TCP:/ {print $3}' /proc/net/sockstat(输出为页数)
  • 查生效值:sysctl net.ipv4.tcp_mem,确认不是旧值(某些 systemd 系统需加 --system
  • 常见坑:写错单位(把字节当页)、三个值没空格分隔、tcp_memtcp_rmem 数值倒挂(比如 high )导致内核静默忽略整行
  • 更隐蔽的坑:某些云主机(如阿里云部分 ECS)内核编译时禁用了 CONFIG_TCP_CONG_BBR 或限制了 tcp_mem 上限,sysctl -w 会成功但实际不生效,需检查 dmesg | grep tcp

真正关键的从来不是“调多大”,而是确认 /proc/net/sockstatTCP: mem 峰值稳定落在 lowpressure 之间——这才是压力可控的标志。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

186

2023.09.27

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

45

2026.01.23

c++空格相关教程合集
c++空格相关教程合集

本专题整合了c++空格相关教程,阅读专题下面的文章了解更多详细内容。

46

2026.01.23

yy漫画官方登录入口地址合集
yy漫画官方登录入口地址合集

本专题整合了yy漫画入口相关合集,阅读专题下面的文章了解更多详细内容。

205

2026.01.23

漫蛙最新入口地址汇总2026
漫蛙最新入口地址汇总2026

本专题整合了漫蛙最新入口地址大全,阅读专题下面的文章了解更多详细内容。

343

2026.01.23

C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

16

2026.01.23

php远程文件教程合集
php远程文件教程合集

本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

100

2026.01.22

PHP后端开发相关内容汇总
PHP后端开发相关内容汇总

本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

73

2026.01.22

php会话教程合集
php会话教程合集

本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。

78

2026.01.22

热门下载

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

精品课程

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

共18课时 | 4.8万人学习

Sass 教程
Sass 教程

共14课时 | 0.8万人学习

Pandas 教程
Pandas 教程

共15课时 | 1.0万人学习

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

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