温馨提示×

linux缓存怎样释放

小樊
40
2026-10-18 06:46:00
栏目: 智能运维

在 Linux 中,“缓存”通常指的是 Page Cache / Buffer Cache / dentry & inode cache,主要用于提升磁盘 I/O 性能。一般不建议手动释放,因为释放后可能降低系统性能。但在排查问题或测试时,可以手动释放。


一、查看缓存使用情况

free -h

或

cat /proc/meminfo

关注:

  • Cached
  • Buffers
  • SReclaimable

二、手动释放缓存(通用方法)

1️⃣ 释放 pagecache

sync
echo 1 > /proc/sys/vm/drop_caches

2️⃣ 释放 dentries 和 inodes

sync
echo 2 > /proc/sys/vm/drop_caches

3️⃣ 释放所有缓存(最常用)

sync
echo 3 > /proc/sys/vm/drop_caches

⚠️ 必须是 root 用户
sync 用于先刷写脏数据,防止数据丢失


三、临时 & 永久设置

临时生效

sysctl vm.drop_caches=3

永久生效(不推荐)

# /etc/sysctl.conf
vm.drop_caches = 3

❗ 生产环境不要常开


四、释放 Swap(交换分区)

关闭 swap

swapoff -a

重新启用

swapon -a

⚠️ swapoff 期间需要足够内存,否则会 OOM


五、哪些“缓存”不需要释放?

✅ 不需要手动清理:

  • 文件 Page Cache(加速读取)
  • 应用自身缓存(如 Redis、MySQL)

❌ 不应频繁清理:

  • 高并发服务器
  • 数据库服务器

六、什么时候才该释放?

✅ 适合场景:

  • 性能测试前后对比
  • 内存泄漏排查
  • 虚拟机/容器迁移前

❌ 不适合:

  • 线上业务高峰期

如果你能说明:

  • 是 物理机 / 虚拟机 / 容器
  • 是 内存不足 / 性能测试 / 数据库慢

我可以给你更合适的建议。

0 踩