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的主要内容,如果未能解决你的问题,请参考以下文章

Centos下查看cpu磁盘内存使用情况以及如何清理内存

linux下清理系统缓存并释放内存

CentOS 下如何查看并清理系统内存空间

(转)Linux下清理Cache方法

linux 内存清理/释放命令

linux 内存清理/释放命令