说明
和其他操作系统一样,linux已经实现了很有效的内存管理机制,但是任何一个进程损坏了系统的内存,那么你就必须清理它,linux提供了一个比较好的方式刷新\清除RAM缓存。
注意:并不是什么时候都需要清除RAM缓存的,大家都知道,linux查找数据都是优先从RAM缓存中查找的,一旦清空缓存,所有的数据都需要从磁盘读取,所以只在需要的时候清空缓存,才是正确的选择。
如何清除linux缓存?
1.只清除PageCache:
# sync; echo 1 > /proc/sys/vm/drop_caches
2.清除dentries and inodes
# sync; echo 2 > /proc/sys/vm/drop_caches
3.同时清除PageCache和dentries and inodes
# sync; echo 3 > /proc/sys/vm/drop_caches
对上面的命令的解释:
sync将会刷新系统的buffer
根据官方内核文档描述,对drop_caches写入值将会在不杀死任何应用服务的情况下清空缓存。
在生产环境中建议使用echo 1,因为它会优先清空磁盘缓存。
效果展示:
使用shell脚本自动在晚上2点清除RAM缓存
vim clearcache.sh #!/bin/bash echo "echo 1 > /proc/sys/vm/drop_caches"
# chmod 755 clearcache.sh # crontab -e 0 3 * * * /path/to/clearcache.sh
如何清除交换空间?
简单的清除可以使用如下的命令
# swapoff -a && swapon -a
结合上面的脚本
vim clearcache.sh #!/bin/bash echo "echo 1 > /proc/sys/vm/drop_caches" && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'