0

0

TCP: out of memory -- consider tuning tcp_mem 报错后推荐的 tcp_mem 参数组合

冷炫風刃

冷炫風刃

发布时间:2026-01-21 18:13:12

|

317人浏览过

|

来源于php中文网

原创

该日志表明TCP缓冲区内存超限,需调整tcp_mem三元组:min为保底值、pressure触发回收、max为硬上限;应按内存容量与并发连接数合理设置,如16GB内存可设为393216 524288 786432。

tcp: out of memory -- consider tuning tcp_mem 报错后推荐的 tcp_mem 参数组合

TCP: out of memory -- consider tuning tcp_mem 这个内核日志表明:TCP 协议在尝试分配内存(如接收/发送缓冲区)时失败,触发了内存压力告警。根本原因不是系统物理内存耗尽,而是 Linux 内核对 TCP 缓冲区使用的硬性限制(由 tcp_mem 三元组控制)被突破。此时需根据实际网络负载和内存规模合理调整该参数。

理解 tcp_mem 的三个阈值含义

/proc/sys/net/ipv4/tcp_mem 是一个由空格分隔的三整数数组:min pressure max,单位为页(page)(通常 1 page = 4 KB):

  • min:TCP 始终保留的最小缓冲区页数,低于此值时内核不进行任何回收;
  • pressure:达到此值后,内核开始主动收缩 TCP 缓冲区(如降低 rmem_default/wmem_default、启用内存压力回收);
  • max:TCP 缓冲区可占用的绝对上限(所有 socket 总和),超过即拒绝新分配并打印该报错。

推荐的 tcp_mem 设置原则

不能简单套用固定数值,需结合总内存容量并发连接规模估算:

慧中标AI标书
慧中标AI标书

慧中标AI标书是一款AI智能辅助写标书工具。

下载
  • 确保 max ≥ 2 × (rmem_max + wmem_max) × 并发连接数,但不宜远超,避免过度抢占内存;
  • pressure 通常设为 max 的 60%–80%,给内核留出平滑回收空间;
  • min 一般设为 pressure 的 5%–10%,保障基础通信不被误回收;
  • 单页按 4 KB 计算,例如 16 GB 内存机器,保守允许 TCP 占用约 1–2 GB 缓冲区(即 262144–524288 页)。

常见场景下的参考值(单位:页)

以下为经过验证的典型配置(适用于主流云服务器或物理机),请先用 getconf PAGESIZE 确认页大小:

  • 8–16 GB 内存,中等并发(:196608 262144 393216(≈ 768 MB / 1 GB / 1.5 GB)
  • 32 GB 内存,高并发(10k+ 连接,如 CDN 或代理服务)393216 524288 786432(≈ 1.5 GB / 2 GB / 3 GB)
  • 64 GB+ 内存,超大规模长连接(如实时消息网关)786432 1048576 1572864(≈ 3 GB / 4 GB / 6 GB)

生效与验证方法

修改后需立即生效并确认效果:

  • 临时生效:echo "393216 524288 786432" > /proc/sys/net/ipv4/tcp_mem
  • 永久生效:在 /etc/sysctl.conf 中添加 net.ipv4.tcp_mem = 393216 524288 786432,再执行 sysctl -p
  • 验证是否写入:cat /proc/sys/net/ipv4/tcp_mem
  • 观察是否还出现报错:dmesg -T | grep "out of memory" 或监控 /var/log/messages
  • 检查当前 TCP 内存使用:cat /proc/net/snmp | grep -A1 Tcp: 中的 InOctets/OutOctets 可辅助判断流量压力,但更直接的是看 /proc/net/sockstatmem 字段总和是否接近 max 值。

相关专题

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

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

392

2023.07.18

堆和栈区别
堆和栈区别

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

572

2023.08.10

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

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

1350

2023.06.21

如何安装LINUX
如何安装LINUX

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

704

2023.06.29

linux find
linux find

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

294

2023.06.30

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

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

776

2023.07.05

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

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

573

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.07.20

Java编译相关教程合集
Java编译相关教程合集

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

9

2026.01.21

热门下载

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

精品课程

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

共48课时 | 7.5万人学习

Git 教程
Git 教程

共21课时 | 2.9万人学习

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

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