异常占用内存什么原因 (监控内存异常怎么解决)

系统莫名其妙的内存使用很高,但是通过常规的手段,top、ps……之类的命令均没有发生占用内存较多的问题。

电脑内存占用异常怎么解决,内存卡状态异常怎么解决

问题描述

如图:

内存的使用已经达6G,但是通过ps_mem查看到的进程使用内存,只有56.3M。那么到底是差在哪部分呢?

电脑内存占用异常怎么解决,内存卡状态异常怎么解决

top

常规的排查方式都排查完后,突然想到一个问题,是不是系统用到大页了呢?

电脑内存占用异常怎么解决,内存卡状态异常怎么解决

竟然真的是大页,分配了2775页,每页的大小2048KB,共计申请内存 5683200。正好是占用的共内存相差很小。

问题原因找到,那么我们该如何解决呢?临时的解决方法

echo 0 > /proc/sys/vm/nr_hugepages  //建议在释放大页前,执行fsync/sync 同步数据到磁盘

电脑内存占用异常怎么解决,内存卡状态异常怎么解决

临时释放大页

如何永久关闭大页:

echo never > /sys/kernel/mm/transparent_hugepage/enabled 
echo never > /sys/kernel/mm/transparent_hugepage/defrag