概述
最近一段时间我们系统里的这个现象困扰了我们很久,因此发个帖子想请大家帮忙指导一下思路。问题如下:
OS version:
Red Hat Enterprise Linux Server release 6.9
从系统上线以来,内存free部分持续减少,chache持续增加,基本上增加的部分就是/proc/meminfo 中的active(file)增加的大小。系统上跑的是oracle数据库。虽然linux将文件缓存到chache中是正常行为,但是这个现象一直持续,想搞明白是什么东西一直在缓存file。
之前使用了内存抓取工具crash按以下命令抓取进程中文件信息:crash> foreach files -c -R REG
输出格式如下:
PID: 2203 TASK: ffff88132d169c00 CPU: 30 COMMAND: "oracle_2203_ncd"
ROOT: / CWD: /u01/app/oracle/product/12.2.0.1/dbhome_1/dbs
FD INODE I_MAPPING NRPAGES TYPE PATH
7 ffff8825ecbbe588 ffff8825ecbbe6e0 329 REG /u01/app/oracle/product/12.2.0.1/dbhome_1/rdbms/mesg/oraus.msb
14 ffff8827bdb900e8 ffff8827bdb90240 1 REG /tmp/.oracle/oracle_xrc_domain_cm.192.168.10.57.31776
16 ffff8825ecb63108 ffff8825ecb63260 15 REG /u01/app/oracle/product/12.2.0.1/dbhome_1/rdbms/mesg/orazhs.msb
17 ffff8825ecbbe588 ffff8825ecbbe6e0 329 REG /u01/app/oracle/product/12.2.0.1/dbhome_1/rdbms/mesg/oraus.msb
按照我的理解,其中NRPAGES是该进程下该文件的Page数量,将每个进程下面缓存的所有文件的NRPAGES汇总即可计算出这一时刻每个进程缓存文件的总大小,然后挑两天的进行对比,即可找出是哪些进程缓存的文件增加了。
共收集和对比5天的数据如下表所示:
date NRPAGE G cache G active(file) G
0530 333.5267372 104 34.26329041
0604 336.3472214 108 36.19488525
0613 253.810276 109 38.11073303
0615 257.9771004 111 38.61402893
0620 256.5512581 113 40.54092407
0604对比0530发现NRPAGE总和的增加与active(file)的增加基本一致,对比每个进程发现是某个工具的Java进程缓存文件增加所导致,将该工具进程重启,对应的java缓存文件的大小大大降低。但是cache没有得到释放。整个现象依然没有得到改变,可以看到从0604到0613到0615到0620,active(file)依然持续增加,但是通过crash所获取的缓存中文件的大小总和却没什么变化,两边对应不上了,这就让我困惑了。
请熟悉Linux内存管理的前辈指点一下,该如何去查找和定位该现象产生的原因呢。
谢谢大家!
最后
以上就是甜甜皮带为你收集整理的linux内存的active,linux /proc/meminfo 中的active(file)值一直增大?的全部内容,希望文章能够帮你解决linux内存的active,linux /proc/meminfo 中的active(file)值一直增大?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复