作者:?大圆那些事?| 文章可以转载,请以超链接形式标明文章原始出处和作者信息
网址:?http://www.cnblogs.com/panfeng412/archive/2013/12/10/drop-caches-under-linux-system.html
问题描述
Linux服务器内存使用量超过阈值,触发报警。
问题排查
首先,通过free命令观察系统的内存使用情况,显示如下:
total used free shared buffers cached Mem: 24675796 24587144 88652 0 357012 1612488 -/+ buffers/cache: 22617644 2058152 Swap: 2096472 108224 1988248
其中,可以看出内存总量为24675796KB,已使用22617644KB,只剩余2058152KB。
然后,接着通过top命令,shift + M按内存排序后,观察系统中使用内存最大的进程情况,发现只占用了18GB内存,其他进程均很小,可忽略。
因此,还有将近4GB内存(22617644KB-18GB,约4GB)用到什么地方了呢?
进一步,通过cat /proc/meminfo发现,其中有将近4GB(3688732?KB)的Slab内存:
...... Mapped: 25212 kB Slab: 3688732 kB PageTables: 43524 kB ......
Slab是用于存放内核数据结构缓存,再通过slabtop命令查看这部分内存的使用情况: