温馨提示×

linux缓存怎么设置

小樊
54
2026-10-12 09:26:27
栏目: 智能运维

在 Linux 中,“缓存”通常指 页缓存(Page Cache)、目录项缓存(dentry) 和 inode 缓存,由内核自动管理。一般不需要手动设置,但可以根据需求进行查看、调优、清理或限制。

下面按常见场景说明:


一、查看当前缓存使用情况

free -h

或

cat /proc/meminfo | grep -E "Cached|Buffers|MemFree"
  • Cached:文件缓存
  • Buffers:块设备缓存
  • Available:真正可用内存

二、手动清理缓存(谨慎使用)

# 清理 pagecache
echo 1 > /proc/sys/vm/drop_caches

# 清理 dentries + inodes
echo 2 > /proc/sys/vm/drop_caches

# 全部清理
echo 3 > /proc/sys/vm/drop_caches

⚠️ 需要 root 权限,且会导致性能短暂下降。


三、调整缓存行为(内核参数)

1️⃣ 控制脏页写回(影响写缓存)

# 查看
sysctl vm.dirty_ratio
sysctl vm.dirty_background_ratio

# 修改(示例)
sysctl -w vm.dirty_ratio=10
sysctl -w vm.dirty_background_ratio=5
  • dirty_ratio:内存中脏页最大比例(强制写盘)
  • dirty_background_ratio:后台开始写盘的比例

持久化:

vim /etc/sysctl.conf
vm.dirty_ratio=10
vm.dirty_background_ratio=5
sysctl -p

2️⃣ 调整 swappiness(影响缓存 vs Swap)

sysctl vm.swappiness
sysctl -w vm.swappiness=10
  • 值越小越倾向保留缓存
  • 服务器通常设为 10

3️⃣ 限制某个进程使用内存(间接影响缓存)

使用 cgroup 或:

ulimit -m

四、应用层缓存(非系统缓存)

如果你说的是 程序缓存(如 Redis、Nginx、APT):

Nginx 缓存

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mycache:10m;

APT 缓存

apt-get clean

Docker 缓存

docker system prune

五、常见误区

❌ “缓存占内存 = 内存不够”
✅ Linux 会自动回收缓存给程序使用


如果你具体指的是:

  • 服务器性能调优
  • 数据库缓存
  • 容器/云环境
  • 某个具体软件

可以告诉我,我给你更精准的配置方案。

0 踩