场景

Linux系统经常内存占用到90%,查看后发现是Page Cache占用绝大多,遂查看Page Cache在Linux系统内是啥用。原来是Linux读取文件时,用于缓存文件的逻辑内容,从而加快对磁盘上的映像和数据的访问。

解决

  • 仅清除页面缓存(PageCache)
    • echo 1 > /proc/sys/vm/drop_caches
  • 清除目录项和inode
    • echo 2 > /proc/sys/vm/drop_caches
  • 清除页面缓存,目录项和inode
    • echo 3 > /proc/sys/vm/drop_caches

简单粗暴直接采用echo 3 > /proc/sys/vm/drop_caches

可以写个定时清除缓存的脚本,当然想要获得更好的体验就需要做更多的设置。

创建文件

1
2
3
#clearcache.sh
#!/bin/bash
echo "echo 3 > /proc/sys/vm/drop_caches"

设置文件权限

1
# chmod 755 clearcache.sh

设置定时任务

1
# crontab -e
1
0  2  *  *  *  /path/to/clearcache.sh