0

0

TCP: out of memory -- consider tuning tcp_mem 后的 tcp_mem 推荐值组合

冷炫風刃

冷炫風刃

发布时间:2026-01-29 20:39:09

|

180人浏览过

|

来源于php中文网

原创

TCP: out of memory警告表示TCP缓冲区内存超tcp_mem硬上限(第三值),触发丢包和拒绝新连接;其三值分别定义低水位、压力启动点和硬上限,单位为页,控制全系统TCP缓冲区总用量。

tcp: out of memory -- consider tuning tcp_mem 后的 tcp_mem 推荐值组合

tcp_mem 报错说明什么

出现 TCP: out of memory -- consider tuning tcp_mem 并不表示系统物理内存真的耗尽,而是内核 TCP 在分配 socket 缓冲区(sk_buff)时,发现当前使用的内存超出了 tcp_mem 设置的硬上限(第三个值)。此时内核会强制丢包、拒绝新连接,并打日志警告。

tcp_mem 三个值分别控制什么

tcp_mem 是一个三元组:low pressure high,单位是页(page,通常是 4KB):

  • low:低于此值时,TCP 缓冲区可自由增长,无压力
  • pressure:达到此值后,内核开始主动回收缓冲区(如降低 rmem_maxwmem_max),避免进一步膨胀
  • high:超过此值即触发 OOM-like 行为——丢包、拒绝新连接、记录警告

注意:这三个值不是 per-socket,而是全系统所有 TCP socket 缓冲区占用的总页数上限。

如何计算合理值

推荐从系统内存和典型连接负载反推,而非套用固定数字:

  • 先查当前内存页大小:getconf PAGE_SIZE(通常为 4096)
  • 估算峰值并发连接数 × 平均每连接缓冲区用量(例如 128KB 接收 + 128KB 发送 ≈ 64 pages)
  • 预留 20%~30% 余量,再向上取整到 2 的幂次(内核内部偏好)
  • 确保 pressurelow × 1.5highlow × 2~3,保持梯度合理

常见参考(基于 16GB 内存、中等吞吐 Web 服务):
tcp_mem = "98304 131072 196608"(≈ 384MB / 512MB / 768MB)

MagickPen
MagickPen

在线AI英语写作助手,像魔术师一样在几秒钟内写出任何东西。

下载

高并发场景(如代理、长连接网关)可能需:
tcp_mem = "262144 327680 393216"(≈ 1GB / 1.28GB / 1.5GB)

修改后必须同步调整的配套参数

只调 tcp_mem 不改其他,容易导致缓冲区实际无法撑到上限:

  • 确认 net.core.rmem_maxnet.core.wmem_max ≥ 单连接最大期望缓冲(如 262144
  • 检查 net.ipv4.tcp_rmemnet.ipv4.tcp_wmem 的第三个值(默认常为 4194304),若远高于 tcp_mem[2],会导致单连接轻易突破全局限制
  • 建议将 tcp_rmem[2]tcp_wmem[2] 设为 ≤ tcp_mem[2] / max_estimated_connections

例如:目标支持 10k 连接,tcp_mem[2] = 393216(1.5GB),则单连接上限不宜超过 157286(≈ 614KB)

真正难的是预估连接规模和 buffer 模式——突发流量下缓冲区会快速堆积,而 tcp_mem 是静态阈值。线上调参后务必用 ss -i/proc/net/snmp 中的 TcpExt: TCPMemoryPressures 计数器验证是否仍频繁触发压力态。

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

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

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

397

2023.07.18

堆和栈区别
堆和栈区别

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

575

2023.08.10

堆和栈的区别
堆和栈的区别

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

397

2023.07.18

堆和栈区别
堆和栈区别

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

575

2023.08.10

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

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

1415

2023.06.21

如何安装LINUX
如何安装LINUX

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

706

2023.06.29

linux find
linux find

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

295

2023.06.30

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

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

782

2023.07.05

java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

1

2026.01.29

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.0万人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.4万人学习

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

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