Linux服务器内存消耗过高

2023-11-06

Linux服务器内存消耗过高

问题描述

Linux服务器的内存持续消耗过高,重启后可以恢复正常,但业务运行后问题依旧存在,而且没有明显高消耗内存进程存在

问题原因

slab消耗内存过多。

解决方案

  1. 登录问题Linux服务器。
  2. 执行free和top命令确认不存在占用大量内存的进程。
  3. 执行如下命令,统计所有进程占用的物理内存,相加后与free命令结果进行核对,确认是否有偏差

ps aux|awk '{sum+=$6} END {print sum/1024}'

4如果确认无偏差后,为了进一步排查进程消耗内存,可执行如下命令,根据rss列排序结果,核实最大消耗内存进程.

ps -eo pid,rss,pmem,pcpu,vsz,args --sort=rss

5、如上述步骤中,均未查找出异常进程,则继续执行以下操作检测slab内存分配器占用情况,执行如下命令。

cat /proc/meminfo | awk '{sum=$2/1024} {print $1 sum " MB"}'

注:以上命令执行过程中将默认的KB单位换算为了MB单位。

6、分析slab列的内存占用情况,核实内存占用是否较高。

注:分析slab内存详细占用情况,常用为atop工具

7、运行atop命令即可观察详细信息,如下图所示,根据显示信息,验证为slab占用内存过高导致的问题。

 

CentOS版本安装atop工具的命令为yum install atop

8、更详细的slab占用分析,需要执行slabtop命令观察,执行结果如下图所示。通过命令结果,定位原因为slab中的dentry占用大量内存。

 

9、dentry占用内存较高,常见原因是程序频繁的创建、删除不同名称的文件。针对此问题执行如下步骤即可解决问题,执行如下命令,手动清除slab缓存临时释放内存空间。

echo 2>/proc/sys/vm/drop_caches

10、检查/etc/sysctl.conf文件中的如下字段,并设定合适的阈值。当系统内存达到阈值时,触发自动回收。

vm.min_free_kbytes

11、最后需要排查业务中的大量IO操作逻辑,并尝试优化

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux服务器内存消耗过高 的相关文章

  • 如何通过不同的接口路由 TCP/IP 响应?

    我有两台机器 每台机器都有两个有效的网络接口 一个以太网接口eth0和 tun tap 接口gr0 目标是使用接口在机器 A 上启动 TCP 连接gr0但然后让机器 B 的响应 ACK 等 通过以太网接口返回 eth0 因此 机器 A 发出
  • Unix 中的访问时间是多少

    我想知道访问时间是多少 我在网上搜索但得到了相同的定义 读 被改变 我知道与touch我们可以改变它 谁能用一个例子来解释一下它是如何改变的 有没有办法在unix中获取创建日期 时间 stat结构 The stat 2 结构跟踪所有文件日期
  • Linux下单个目录下文件过多会怎样?

    如果一个目录中有大约 1 000 000 个单独的文件 大部分大小为 100k 其中没有其他目录和文件 是否会以任何其他可能的方式降低效率或产生缺点 ARG MAX 会对此提出异议 例如 rm rf 在目录中时 会说 参数太多 想要执行某种
  • Linux >2.6.33:可以使用 sendfile() 来实现更快的“猫”吗?

    必须将大量大文件连接成一个更大的单个文件 我们目前使用 cat file1 file2 output file but are wondering whether it could be done faster than with that
  • 无法连接到 Azure Ubuntu VM - 公钥被拒绝

    我们在 Azure 上使用 Ubuntu VM 一段时间了 很少遇到任何问题 然而 其中一台虚拟机最近出现了问题 出乎意料的是 Ubuntu VM 开始拒绝公钥 ssh i azure key email protected cdn cgi
  • Linux 中有没有一种轻量级的方法来获取当前进程数?

    我希望我的 基于 C C 的 程序显示一个数字指示器 指示本地系统上当前有多少个进程 将经常查询正在运行的进程数值 例如每秒一次 以更新我的显示 有没有一种轻量级的方法来获取该数字 显然我可以调用 ps ax wc l 但我不想强迫计算机生
  • grep 彩色线条

    我编写了一个简单的 PHP shell 脚本 它解析文件并输出某些元素 它产生大量的输出 采用不同的 bash 颜色 绿色表示正常 黄色表示警告 红色表示错误等 在开发过程中我想过滤掉一些行 例如 所有包含红色文本的行 我可以使用grep
  • 我可以在 Ubuntu 上使用 Homebrew 吗?

    我只是尝试使用 Homebrew 和 Linuxbrew 在我的 Ubuntu 服务器上安装软件包 但都失败了 这就是我尝试安装它们的方法 sudo apt get install build essential curl git m4 r
  • 在 MacOS 上构建需要 net461 的 dotnet SDK 项目的最简单方法

    我有一个 dotnet SDK sln and a build proj with
  • 在 Linux 服务器上创建和编辑 MS-Word 文档?

    希望开发处理文档的服务器端应用程序 源文档大多是MS Word 2003 2007 即MS版本的Docx 希望服务器应用程序能够在linux或windows上运行 想知道在linux下读写MS Word文件最好的工具或库是什么 兼容性是最重
  • 如何使用 PyAudio 选择特定的输入设备

    通过 PyAudio 录制音频时 如何指定要使用的确切输入设备 我的电脑有两个麦克风 一个内置 一个通过 USB 我想使用 USB 麦克风进行录音 这流类 https people csail mit edu hubert pyaudio
  • 重新链接匿名(未链接但打开)文件

    在 Unix 中 可以创建匿名文件的句柄 例如 使用 creat 创建并打开它 然后使用 unlink 删除目录链接 留下一个带有 inode 和存储的文件 但没有可能的方法重新打开它 此类文件通常用作临时文件 通常这就是 tmpfile
  • 进程如何知道它已收到信号

    如果我错了 请纠正我 以下是我对信号的理解 据我所知 信号生成 和信号传递有2个不同 事物 为了产生信号 操作系统只是在位数组中设置一个位 在过程控制中维护 工艺块 PCB 每一位 对应于特定信号 当设置一个位时 这意味着 该位对应的信号为
  • 为什么我的代码在编译用于分析 (-pg) 时在多线程下运行比在单线程下运行慢?

    我正在写一个光线追踪器 最近 我在程序中添加了线程 以利用 i5 四核上的附加内核 奇怪的是 应用程序的调试版本现在运行速度变慢 但优化后的构建运行速度比添加线程之前更快 我将 g pg 标志传递给 gcc 以进行调试构建 并将 O3 标志
  • Flex 的远程版本误解了我的规则

    我使用 flex 和 bison 编写了一个小汇编程序 可以在我的机器 ubuntu 10 10 上构建并运行正常 现在其他人正在尝试在 arch linux 上构建它 并且他们安装的 flex 产生了不同的 lex yy c 这是不匹配的
  • sudo pip install python-Levenshtein 失败,错误代码 1

    我正在尝试在 Linux 上安装 python Levenshtein 库 但每当我尝试通过以下方式安装它时 sudo pip install python Levenshtein 我收到此错误 命令 usr bin python c 导入
  • “./somescript.sh”和“. ./somescript.sh”有什么区别

    今天我按照一些说明在 Linux 中安装软件 有一个需要首先运行的脚本 它设置一些环境变量 指令告诉我执行 setup sh 但是我执行时犯了一个错误 setup sh 所以环境没有设置 最后我注意到了这一点并继续进行 我想知道这两种调用脚
  • 使用 hcitool 扫描低功耗蓝牙?

    当我运行此命令时 BLE 设备扫描仅持续 5 秒 sudo timeout 5s hcitool i hci0 lescan 输出显示在终端屏幕中 但是 当我将输出重定向到文件以保存广告设备的地址时 每次运行该命令时 我都会发现该文件是空的
  • Linux 阻塞与非阻塞串行读取

    I have 这段代码 https stackoverflow com questions 6947413 how to open read and write from serial port in c用于在Linux中从串行读取 但我不
  • python 可以检测它运行在哪个操作系统下吗?

    python 可以检测操作系统 然后为文件系统构建 if else 语句吗 我需要将 Fn 字符串中的 C CobaltRCX 替换为 FileSys 字符串 import os path csv from time import strf

随机推荐

  • 【学习笔记】第8章 Linux共享库的组织

    第8章 Linux共享库的组织 注 以下内容摘录自 程序员的自我修养 SO NAME libname so x y z 其中x表示主版本号 y表示次版本号 z表示发布版本号 不同的主版本号可能导致程序不兼容 相同的主版本号 不同的次版本号之
  • FABRIC架构详解

    原文地址 1 区块链解决方案的特性 1 1 分布式帐本 区块链核心概念是分布式帐本 就像下面的图1所示 同样的帐本 全量的交易数据 详见下节 在任意一台节点 不包括客户端 上都有 所以 其优点是数据很难造假 造假后也可以通过追溯记录来追究法
  • QT析构崩溃问题

    QT析构崩溃问题 问题原因 析构函数崩溃的原因可能有很多 但通常是由于在析构函数中访问了已经被删除或释放的对象指针或内存区域引起的 可能是由于以下原因导致析构函数崩溃 对象被重复删除 如果您在程序中多次删除同一个对象 可能会导致析构函数崩溃
  • 我的webpack学习笔记(一)

    前言 在上一篇文章中我介绍了学习webpack前的准备工作 下面开始webpack的学习 创建webpack demo文件夹 mkdir webpack demo cd webpack demo 初始化一份package json npm
  • 电赛专题

    有幸邀请到了在2019大学生电子设计大赛的获奖优秀队员为本公众号投稿 将分几次推文为大家介绍几只优秀队伍的作品 本次推文为大家分享西安电子科技大学微电子学院的团队的作品 团队成员为 步枫 施炜洛 魏巍 排名不分先后 指导教师 蔡觉平 康海燕
  • Free C/C++ Libraries(免费的C/C++库)

    推荐一些免费的开源C C 程序库 该内容来源于 http www programmerworld net resources c library htm 1 Boost Provides a repository for free peer
  • tar.gz文件怎么解压缩_如何解压缩tar.gz文件

    tar gz文件怎么解压缩 如果您使用开源软件 则有时可能会遇到 tar文件 开源tar存档实用程序自1979年以来一直存在 因此它在POSIX世界中确实无处不在 它的目的很简单 它将一个或多个文件并 包装 到一个自包含的文件中 称为磁带存
  • QT中connect高级链接——指针、lambda、宏、第五参数

    1 connect使用指针 cpp view plain copy connect b2 QPushButton released this MainWidget mySlot 抬起 按钮b2时 修改按钮b2的标题 2 使用lambda表达
  • 数据治理之数据质量

    一 前言 之前我们介绍了数据资产治理类工具 数据资产管理产品架构规划设计思路 本期 我们来聊聊数据质量检测和监控的核心工具 DQC和SLA 二 基本概念 DQC 即Data Quality Control 数据质量检测 数据质量控制 一般我
  • 找了这么多毕业设计题目,反而不知道选哪个了

    1 学生宿舍管理系统 2 仓库管理系统 3 超市销售管理系统 4 工资管理系统 5 供应商管理系统 6 会员卡管理系统 7 计量管理系统 8 进销存财务管理系统 9 进销存管理系统 10 人才管理系统 11 图书管理系统 12 图书销售系统
  • java代码开发完成后,代码走查规范

    代码走查注意事项 1 不变的值 尽量写个常量类 2 尽量使用if else 不要一直if去判断 3 减少循环调用方法查询数据库 4 dao层尽量不要用逻辑 尽量在service里写业务逻辑 5 金额使用Bigdecimal类型的 0 00这
  • 对象的上转型对象

    1 定义 如果B类是A类的子类或间接子类 当用B类创建对象b并将这个对象b的引用赋给A类对象a时 如 A a a new B OR A a B b new B a b 则称A类对象a是子类B对象b的上转型对象 2 性质 对象b的上转型a的实
  • 怎么使用计算机开机关机,笔记本电脑怎么开关机_笔记本电脑正确的开关机步骤-win7之家...

    我们在使用笔记本电脑之后 都会进行开关机 看似简单的开关机 如果方法不正确的话 就会对电脑使用寿命有影响 所以正确的开关机可以帮助我们延长电脑使用寿命 那么笔记本电脑怎么开关机呢 针对这个问题 本文给大家讲述一下笔记本电脑正确的开关机步骤吧
  • 银行家舍入法(四舍六入)

    文章目录 银行家舍入法 银行家舍入法 生活中常见的计算方法就是四舍五入 但是银行家舍入法是四舍六入 五后面有非0的数字将直接向前进位 没有数字的情况下还要看前一位是偶数还是奇数 偶数舍去 奇数进位 总结为一句话就是 四舍六入五考虑 五后非零
  • 无需做任何配置!持安零信任可自动防御Web应用勒索攻击

    01 Attention 中毒终端已超2000个 近日 一则大型企业的勒索病毒事件在网络上传播 引起了广泛关注 某互联网企业财务管理软件 T 被爆出存在任意文件上传 远程代码执行的未授权访问漏洞 未授权访问漏洞 在企业内部一直以来都是非常常
  • 领域驱动模型(DDD)在美团外卖活动管理业务的应用

    什么是领域驱动模型 2004年Eric Evans 发表 领域驱动设计 软件核心复杂性应对之道 Domain Driven Design Tackling Complexity in the Heart of Software 简称Evan
  • 模仿mnist数据集制作自己的数据集

    模仿mnist数据集制作自己的数据集 最近看深度学习 用TensorFlow跑教程里的模型 发现教程里大多都是用mnist和cifar这两个数据集来演示的 想测试自己的数据集看看初步效果 于是就想套用现有的模型 将自己的数据集做成和mnis
  • 解决nginx负载均衡的session共享问题

    查了一些资料 看了一些别人写的文档 总结如下 实现nginx session的共享 PHP服务器有多台 用nginx做负载均衡 这样同一个IP访问同一个页面会被分配到不同的服务器上 如果session不同步的话 就会出现很多问题 比如说最常
  • fireFox post请求插件,火狐浏览器插件

    在开发过程中 为了测试数据 提交表单等 经常会用到post请求 在这里向大家介绍一款比较好用的浏览器插件 它可以很好的模拟post get put等常用的请求 大大便利了我们的开发 它就是fire fox中的RESTClient 安装方法如
  • Linux服务器内存消耗过高

    Linux服务器内存消耗过高 问题描述 Linux服务器的内存持续消耗过高 重启后可以恢复正常 但业务运行后问题依旧存在 而且没有明显高消耗内存进程存在 问题原因 slab消耗内存过多 解决方案 登录问题Linux服务器 执行free和to