标签:内存告警
一、问题描述
2017年国庆假期期间收到cmsdb内存告警,说内存使用率已经超过85%
二、问题分析
1、登录cmsdb服务器,查看哪些进程使用内存最多,发现内存使用最多也就才48M,如下图
2、那大量的内存哪里去了,又通过free –m查看具体的内存使用,发现剩余只有164M,而cached则使用了18607M
3、为什么cached使用这么多内存,通过cat/proc/meminfo查看详细的内存使用情况,发现Inactive(file)占用大量的内存,即不活动的内存,linux系统内存回收就是从此地方回收内存,Inactive(file)很大,说明系统回收的时候,可以一下子回收很多内存
注:LRU list是Linux kernel的内存页面回收算法(PageFrame Reclaiming Algorithm)所使用的数据结构,LRU是Least Recently Used的缩写词,这个算法的核心思想是:回收的页面应该是最近使用得最少的,为了实现这个目标,最理想的情况是每个页面都有一个年龄项,用于记录最近一次访问页面的时间,可惜x86 CPU硬件并不支持这个特性,x86 CPU只能做到在访问页面时设置一个标志位Access Bit,无法记录时间,所以Linux Kernel使用了一个折衷的方法——它采用了LRU list列表,把刚访问过的页面放在列首,越接近列尾的就是越长时间未访问过的页面,这样,虽然不能记录访问时间,但利用页面在LRU list中的相对位置也可以轻松找到年龄最长的页面。Linux kernel设计了两种LRU list: active list 和 inactivelist, 刚访问过的页面放进active list,长时间未访问过的页面放进inactive list,这样从inactive list回收页面就变得简单了。内核线程kswapd会周期性地把active list中符合条件的页面移到inactive list中,这项转移工作是由refill_inactive_zone()完成的。
三、解决步骤
清系统缓存:
#echo 1 >/proc/sys/vm/drop_caches 清理页缓存
#echo 2 >/proc/sys/vm/drop_caches 清理文件缓存
#echo 3 >/proc/sys/vm/drop_caches 清理也缓存和文件缓存
四、总结与建议
1、切记,操作上面步骤时,一定要通过sync将内存中数据同步到磁盘中,否则有可能丢失数据
本文出自 “会飞的鱼” 博客,请务必保留此出处http://wstonge.blog.51cto.com/1598339/1971966
标签:内存告警
原文地址:http://wstonge.blog.51cto.com/1598339/1971966