linux下清理内存以及swap
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下清理内存以及swap相关的知识,希望对你有一定的参考价值。
参考技术A 第一步:先执行sync命令#sync
sync命令用于强制被改变的内容立刻写入磁盘,更新超块信息,以防止释放,sync命令则可用来强制将内存缓冲区中的数据立即写入磁盘中。
第二步:清理linux内存缓存
#echo 3 > /proc/sys/vm/drop_caches
一般系统是不会自动释放内存的
关键的配置文件/proc/sys/vm/drop_caches。这个文件中记录了缓存释放的参数,默认值为0,也就是不释放缓存。他的值可以为0~3之间的任意数字,代表着不同的含义:
0 – 不释放
1 – 释放页缓存
2 – 释放dentries和inodes
3 – 释放所有缓存
此指令输入立即生效,意在释放所有缓存。
第三步:关闭swap,再开启swap
(如果只是清理swap,第二部可以不用进行操作,因为操作了第二步关闭swap时会使用更长的时间)
#swapoff -a 这一步因为是后台 在一点一点的释放,如果配置的swap超大,这里就等待得超久一些
#swapon -a 再开启
linux什么时候开始使用虚拟内存(swap)
A.[root@wenwen ~]# cat /proc/sys/vm/swappiness
60
上面这个60代表物理内存在使用60%的时候才会使用swap
swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,
swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。
通常情况下:
swap分区设置建议是内存的两倍 (内存小于等于4G时),如果内存大于4G,swap只要比内存大就行。另外尽量的将swappiness调低,这样系统的性能会更好。
B.修改swappiness参数
临时性修改:
[root@wenwen ~]# sysctl vm.swappiness=10
vm.swappiness = 10
[root@wenwen ~]# cat /proc/sys/vm/swappiness
10
永久性修改:
[root@wenwen ~]# vim /etc/sysctl.conf
加入参数:
vm.swappiness = 35
然后在直接:
[root@wenwen ~]# sysctl -p
查看是否生效:
cat /proc/sys/vm/swappiness
35
linux下清理缓存,以释放内存
[[email protected] src]# free total used free shared buffers cached Mem: 1920472 1845892 74580 180 462708 338068 -/+ buffers/cache: 1045116 875356 Swap: 0 0 0
[[email protected] ~]# sync [[email protected] ~]# echo 1 > /proc/sys/vm/drop_caches [[email protected] ~]# echo 2 > /proc/sys/vm/drop_caches [[email protected] ~]# echo 3 > /proc/sys/vm/drop_caches [[email protected] ~]# free total used free shared buffers cached Mem: 1920472 1015300 905172 184 992 46960 -/+ buffers/cache: 967348 953124 Swap: 0 0 0 [[email protected] ~]#
找了几天没找到是哪个应用占用的内存.
使用top命令分别查了tomcat, mysql, mongodb, nginx, fastdfs, redis...等的应用, 均未发现占用忒高的情况.
无奈, 在网上看到了上面的方法, 记录下来, 先救急用吧.
说明:
切记释放缓存前先执行sync命令, 防止数据丢失.
To free pagecache: # echo 1 > /proc/sys/vm/drop_caches To free dentries and inodes: # echo 2 > /proc/sys/vm/drop_caches To free pagecache, dentries and inodes: # echo 3 > /proc/sys/vm/drop_caches
扫盲:
total——总物理内存 used——已使用内存,一般情况这个值会比较大,因为这个值包括了cache+应用程序使用的内存 free——完全未被使用的内存 shared——应用程序共享内存 buffers——缓存,主要用于目录方面,inode值等(ls大目录可看到这个值增加) cached——缓存,用于已打开的文件
以上是关于linux下清理内存以及swap的主要内容,如果未能解决你的问题,请参考以下文章