作者:张岩峰,转载请注明出处     笔名:云烟旧梦

51CTO课程地址:https://edu.51cto.com/lecturer/12750547.html    Linux技术交流群:1127825548


        今天张老师来给大家聊一聊我们在日常运维中不可避免的一个问题,就是服务器内存过高如何处理?那么处理的方法大致为两个:  

        1、释放不需要的进程

        2、增加内存条或者增加SWAP内存


这里主要给大家聊一聊如何释放不需要的进程:

        1、使用top 查看内存的占用情况,然后键入"M"命令根据内存的占用情况降序排列("P"是CPU占用情况降序排列)。

        2、关闭掉不需要的进程,直接使用kill -15终止进程即可。

        3、再使用top查看内存占用情况,发觉内存占用率已经降下来了。但是free -h却还有大量的内存被占用(假设占用了100G)(内存总共128G),vmstat发现是cache占用了大量内存。

        什么是Cache Memory(缓存内存)呢?

        当你在读写文件的时候,Linux内核为了提高读写效率与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存会很少。其实这缓存内存(Cache Memory)在你需要使用内存的时候会自动释放,所以你不必担心没有内存可用。如果你希望手动去释放Cache Memory(缓存内存)的话也是有办法的。

        4、使用 echo 1 > /proc/sys/vm/drop_caches 释放缓存

        常用的释放缓存的命令如下:

        To free pagecache:仅清除页面缓存(PageCache)

        echo 1 > /proc/sys/vm/drop_caches

        To free dentries and inodes:清除目录项和inode

        echo 2 > /proc/sys/vm/drop_caches

        To free pagecache,dentries and inodes:清除页面缓存,目录项和inode

        echo 3 > /proc/sys/vm/drop_caches

        5、再使用free -h 查看内存使用情况,发现内存使用情况就已经正常了。

以上就是处理Linux服务器内存过高的一个方法!