#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中每次用free查看的时候,发现free的空间都只有500M左右。同样的环境32G只剩下这点,64G的也只剩下这么一点。后来发现都被Cache占用了,因为服务器上运行了Kafka环境,每周的日志文件都有一二百G的,估计就是他占用了page cache吧。
Free中的buffer和cache:(它们都是占用内存):
buffer : 作为buffer cache的内存,是块设备的读写缓冲区
cache: 作为page cache的内存, 文件系统的cache
如果 cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO bi会非常小。
Linux内核会在内存将要耗尽的时候,触发内存回收的工作,以便释放出内存给急需内存的进程使用。也可以用动释放,释放的时候需要对cache中的数据跟对应文件中的数据一致。
释放的方式有下以几种
一般情况下释放pagecache就可以了。这样可以写一个sh脚本来在服务器空闲的时候定时执行
使用crontab来设置定时任务,如每天4点开始清理
本文参考: https://www.jianshu.com/p/9b9f4917fb2e
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)