linux内存缓存占用过高分析和优化

1、什么是buffer/cache ?

buffer/cache其实是作为服务器系统的文件数据缓存使用的,尤其是针对进程对文件存在read/write操作的时候,所以当你的服务进程在对文件进行读写的时候,Linux内核为了提高服务的读写速度,则将会把文件放在此处的buffer/cache中进行缓存使用,由于Linux服务的特点便是任何事物都会以文件的形式进行存在,所以你会发现不管你是否对文件做了大规模的读写,机器的buffer/cache是一直都存在的,并且持续的增高不下,这是因为服务器所产生的网络连接也好,用户协议的(UDP)套接字也好,这部分的数据系统都会为应用程序创建对应的文件描述符,而这些文件描述符的使用,则又都会重新进入buffer/cache中做读写使用,所以这也是你的机器始终都会存在较高buffer/cache的原因,因为所有的文件读写都会用到buffer/cache,在内存合理的情况下。

2、需要注意的一些特点

在服务内存够用的情况下,Linux内核为了加快对文件的读写效率会将文件放入buffer/cache中以保证读写效率,但其实,尽管当你的应用程序对文件的读写运行结束后,buffer/cache也不会自动释放该部分内存,而是作为缓冲进行保留,等到你的服务进程在下一次进行相同文件的读写时就可以直接使用,省去了各种重新进行内存初始化的操作;所以这将会导致,当你的应用进程频繁对不同的文件进行读写时,你会发现服务所可以直接使用的free内存将会越来越少的一个重要原因;难道buffer/cache在这样无休止的缓存当中就不会自动释放?当然不是,当服务器在内存压力较大的情况下时,则将会自动进行内存的回收,作为free空间分给其它进程使用,这其中主要回收的一个内存则是buffer/cache的缓冲区内存块。

3、如何进行手动 buffer/cache 回收?

除了在系统进程内存使用较大压力的情况下进行内存的回收外,我们也可以进行手动的buffer/cache回收,但由于buffer/cache主要是用于文件的读写使用,所以进行文件回收时,一般常伴随系统的IO彪高,因为系统内核也对比cache中的数据与硬盘中的数据是否一致,如果不一致需要写回硬盘,然后才能进行内存的回收。

3.1将内存中数据强制先刷新到磁盘中

sync;

3.2清理Buffer缓存区域

echo 3 > /proc/sys/vm/drop_caches 表示清除pagecache和slab分配器中的缓存对象

echo 1 > /proc/sys/vm/drop_caches:表示清除pagecache。

echo 2 > /proc/sys/vm/drop_caches:表示清除回收slab分配器中的对象(包括目录项缓存和inode缓存)

注:slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache。

4、监控报警可用内存空间不足常规的解决方案如下:

增加内存(增加成本)

增加虚拟内存(影响性能)

定期清理缓存(echo 1 > /proc/sys/vm/drop_caches)

5、问题分析

5.1 监控系统负载情况

通过监控系统负载情况(vmstat 1),确定是页面缓存(cache项)占用量大,并且释放页面缓存后,从块设备读入数据量(bi项)会马上增加,如果bi或bo长期不等于0,表示内存不足。

5.2监控io情况

通过监控io情况(iostat -x -k 1)也可以看出

5.3监视磁盘I/O使用状况

基于此可以猜测是有进程在频繁的读取文件导致,监视磁盘I/O使用状况(iotop -oP),释放页面缓存后有几个sed命令读取文件进程占用IO很高。

生产环境遇到服务buffer/cache 过高如何排查是由那几个进程引起的(hcache 的使用方式)

6、使有hcache缓存文件

全局显示10个最大的被缓存文件

[root@java ~]# hcache -top 10

注:查看指定进程ID所使用的buffer/cache的使用情况:hcache -pid 16322

7、使用losf查看当前所开启该文件的所有进程

通过上述所获取到的被缓存最大的文件名称后,可以直接通过 lsof file_name 得到当前所开启该文件的所有进程信息;

7.1显示使用 kbase-psrt.jar 的进程信息

7.2 获取当前进程号所打开的所有文件信息

更多关于lsof的使用,可以参考如下链接:https://www.cnblogs.com/sparkbj/p/7161669.html

8、内存详细信息

存放内存详细信息文件:/proc/meminfo

查看更详细的内存信息:

cat /proc/meminfo|grep -E "Buffer|Cache|Swap|Mem|Shmem|Slab|SReclaimable|SUnreclaim"

  • MemFree:空闲的物理内存
  • MemAvailable:可用的物理内存,MemFree+Buffers+Cached
  • Buffers:(Buffer Cache)对磁盘块设备数据的缓存
  • Cached:(Page Cache)对文件系统上文件数据的缓存,MemFree+SReclaimable
  • SwapTotal:虚拟内存,利用磁盘空间虚拟出的一块逻辑内存
  • Shmem:进程间共同使用的共享内存
  • Slab:Linux内存管理机制
  • SReclaimable:Slab可回收部分
  • SUnreclaim:Slab不可回收部分

9、清除缓存策略:

定期清理缓存:echo 1 > /proc/sys/vm/drop_caches

  • 1:清除page cache
  • 2:清除slab分配器中的对象(包括目录项和inode)
  • 3:清除page cache和slab分配器中的对象

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/690211.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

亘古真知

目录 一,概述 二,个人面板 三,科技面板 四,手牌 五,回合 1,行动 (1)打造 (2)学习 (3)归档 (4)挖掘 …

网信办大模型备案全网最详细流程【附附件】

本文要点:大模型备案最详细说明,大模型备案条件有哪些,《算法安全自评估报告》模板,大模型算法备案,大模型上线备案,生成式人工智能(大语言模型)安全评估要点,网信办大模型备案。 大模型备案安…

用你熟悉的语言就能开发智能合约,Vara Network 以 WASM 解锁未来应用创新

Vara Network 自推出以来,凭借其基于 Gear Protocol 的独特架构和强大的开发工具,为开发者提供了一个高效、安全的智能合约构建平台。Vara Network 通过采用先进的 Actor 模型、持久内存概念和 WebAssembly 技术,实现了异步消息处理、并行计算…

湖南源点(市场研究咨询)如何产出更加有意义的竞品调研

湖南源点咨询认为:当前,任何项目都不能盲目开始,前期的准备工作必不可少。在基础架构搭建的同时,设计上对于前端功能、用户体验的调研就优先开始了。在这个阶段,大部分设计师都会分配很多调研任务,疯狂对竞…

YOLOv5改进总目录 | backbone、Neck、head、损失函数,注意力机制上百种改进技巧

💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏地址: YOLOv5改进入门——持续更新各种有效涨点方法 点击即可跳转 报错 解决Yolov5的RuntimeError: result type Float can…

Leetcode:括号生成

题目链接:22. 括号生成 - 力扣(LeetCode) 题目分析 1、括号的类型只有()一种,没有{}或者[] 2、括号可以进行多层嵌套 3、有效的括号组合需要满足以下两个条件(任意一个子串)&am…

Qt5学习笔记(一):Qt Widgets Application项目初探

笔者长期使用MFC开发Windows GUI软件。随着软件向Linux平台迁移的趋势越发明朗,GUI程序的跨平台需求也越来越多。因此笔者计划重新抓一下Qt来实现跨平台GUI程序的实现。 0x01. 看看Qt Widgets Application项目结构 打开Qt5,点击“ New”按钮新建项目。…

了解Java内存模型(Java Memory Model, JMM)

了解Java内存模型(Java Memory Model, JMM) Java内存模型(Java Memory Model, JMM)是Java语言规范中规定的一组规则,定义了多线程程序中变量(包括实例字段、静态字段和数组元素)的访问方式。JM…

ChatGPT-4o, 腾讯元宝,通义千问对比测试中文文化

国内的大模型应用我选择了国内综合实力最强的两个,一个是腾讯元宝,一个是通义千问。其它的豆包,Kimi,文心一言等在某些领域也有强于竞品的表现。 问一个中文文化比较基础的问题,我满以为中文文化chatGPT不如国内的大模型。可事实…

pdf文件在线压缩网站,pdf文件在线压缩工具软件

在数字化时代的今天,PDF文件已经成为我们日常生活和工作中不可或缺的一部分。然而,随着PDF文件的广泛使用,其文件大小问题也日益凸显。过大的PDF文件不仅占用了大量的存储空间,而且在传输和共享过程中也往往面临诸多不便。因此&am…

【日记】遇到了一个 “不愿睁眼看世界也没受过社会毒打” 的逆天群友(464 字)

正文 今天坐在柜台玩了一天手机…… 手机都玩没电了快。下午在劝一个群友睁眼看世界,实在劝不动。他真的太逆天了,我不清楚这么高学历的人,怎么能说出这么天真的话。逆天又离谱。 晚上的时间几乎全在做家务。平时晚上都是跳舞来着&#xff0c…

LeetCode LRU缓存

题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,…

关于 spring boot 的 目录详解 和 配置文件 以及 日志

目录 配置文件 spring boot 的配置文件有两种格式,分别是 properties 和 yml(yaml)。这两种格式的配置文件是可以同时存在的,此时会以 properties 的文件为主,但一般都是使用同一种格式的。 格式 properties 语法格…

Web UI自动化测试_Selenium+Python

一、概述: 1.1 Selenium是什么 Selenium 是一个基于浏览器的自动化工具,可以跨平台、跨浏览器使用。 Selenium 主要包括三部分: 1、Selenium IDE: Firefox 浏览器的一个插件(扩展),它可以进行…

搭建数字化营销平台带来的一系列积极影响!

在当今数字化时代,搭建数字化营销平台具有一系列令人瞩目的积极影响。 这种平台的搭建,能够有力地促进形成良好的产业生态。就如同搭建蚓链数字化生态营销系统这般,它强化了产业间的沟通与协作,使得各个环节紧密相连&#xff…

UI学习笔记(一)

UI学习 一:UIView基础frame属性隐藏视图对象:UIView的层级关系 二:UIWindow对象三:UIViewController基础UIViewController使用 四:定时器与视图移动五:UISwitch控件六:滑动条和进度条七&#xf…

python数据分析-ZET财务数据分析

一、公司背景 中兴通讯股份有限公司是一家总部位于中国深圳的跨国公司,致力于为全球客户提供通信设备和解决方案。公司成立于1985年,自成立以来一直致力于为客户提供创新的通信技术和服务。中兴通讯的业务涵盖多个领域,包括但不限于高端路由…

MySQL数据库操作基础(增删查改)

数据库操作基础(增删查改) 1.插入 1.1往数据表中插入一条数据 insert into 表名 values (值,值,值...)此处列出的这些值的数目和类型 要和表的相对应 1.2指定列插入 insert into 表名(列名) values (值);1.3一次插入多个记录 insert into 表名 values (值),(值)...一次插入…

weditor安装时提示This is an issue with the package mentioned above, not pip

报错如下: note: This error originates from a subprocess, and is likely not a problem with pip. error: metadata-generation-failed Encountered error while generating package metadata. ╰─> See above for output. note: This is an issue with …