在Linux系统中有先进的缓存机制,会针对dentry(用于VFS,加速文件路径名到inode的转换)、 Buffer Cache(针对磁盘块的读写)和Page Cache(针对文件inode的读写)进行缓存操作,有效缩短 I/O系统调用(比如read、write)的时间。 但当进行了大量文件操作之后,缓存会把内存资源基本用光,导致系统缓慢,使用swap空间,影响了性能,这时就需要清理缓存了。
如何清除Cache
在清除Cache之前,先执行sync命令将缓冲区的数据写入磁盘,
然后通过向文件/proc/sys/vm/drop_caches
写入值1
、2
或3
的方式来清除Cache:
注意:文件/proc/sys/vm/drop_caches
只有在进行写操作时才会触发清除cache操作
1 | # 1. 仅清除页面缓存(PageCache) |
第一条命令是最安全的,它只会清除页面缓存,一般情况下,我们只需要执行第一条命令即可。 在生产环境中,不建议执行第三条命令,除非你明确知道你需要执行什么。
如何清除Swap
可以通过开关Swap的方式来清除Swap:
1 | swapoff -a && swapon -a |
查看内存使用情况
使用free命令来查看内存使用情况:
1 | # free -h |