作者:张岩峰,转载请注明出处 笔名:云烟旧梦
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服务器内存过高的一个方法!