温馨提示×

centos缓存怎么优化

小樊
42
2026-10-08 14:28:42
栏目: 智能运维

在 CentOS(以及大多数 Linux 系统)中,“缓存优化”通常分为 系统缓存(内存/磁盘)、软件缓存(如 Nginx、MySQL) 和 文件系统缓存 几个层面。下面从常见场景给你一个系统性的优化思路。


一、Linux 系统级缓存优化(PageCache / dentry / inode)

1. 理解 Linux 缓存机制

Linux 会主动使用空闲内存做 文件缓存(PageCache),提升 IO 性能:

  • 优点:读文件快
  • 风险:内存吃满(看起来“可用内存少”,但这是正常的)

查看缓存占用:

free -h
cat /proc/meminfo

2. 合理设置 swap(避免误用)

swapon -s

建议:

  • 物理内存 ≥ 8G:swap 可设 2–4G
  • 数据库服务器:尽量减小 swap 使用

调整 swap 倾向:

# 值越小越倾向用内存(默认60)
sysctl vm.swappiness=10

永久生效:

echo "vm.swappiness=10" >> /etc/sysctl.conf

3. 脏页(dirty page)优化(写缓存)

sysctl vm.dirty_ratio
sysctl vm.dirty_background_ratio

常见优化(写多场景):

vm.dirty_background_ratio = 5
vm.dirty_ratio = 10

含义:

  • background:后台开始刷盘
  • ratio:达到比例强制刷盘

二、文件系统 & 磁盘缓存优化

1. 使用合适文件系统

CentOS 7/8 推荐:

  • xfs(默认,稳定)
  • 大文件场景:xfs + noatime

挂载优化:

mount -o noatime,nodiratime /dev/sdb1 /data

永久:

/dev/sdb1 /data xfs noatime,nodiratime 0 0

2. 磁盘 IO 调度器

查看:

cat /sys/block/sda/queue/scheduler

SSD 推荐:

echo deadline > /sys/block/sda/queue/scheduler
# 或(CentOS 8+)
echo none > /sys/block/sda/queue/scheduler

三、应用层缓存优化(最常见)

1. Nginx 缓存

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=mycache:10m max_size=10g inactive=60m;

location / {
    proxy_cache mycache;
    proxy_cache_valid 200 302 10m;
}

2. MySQL 缓存

SHOW VARIABLES LIKE 'innodb_buffer_pool_size';

建议:

  • 专用 DB:buffer_pool = 70%~80% 内存
innodb_buffer_pool_size = 8G
query_cache_type = 0   # MySQL 8 已移除

3. Redis 作为缓存

  • 设置最大内存
maxmemory 4gb
maxmemory-policy allkeys-lru

四、清理缓存(谨慎使用)

仅调试或释放内存时:

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

⚠ 不建议生产频繁执行


五、常见误区

❌ “available 内存少 = 内存不够”
✅ Linux 用缓存提升性能,正常

❌ 盲目关缓存
✅ 缓存是性能核心


六、如果你能补充这些信息,我可以给更精确方案

  1. CentOS 版本(6 / 7 / 8 / Stream)
  2. 主要用途(Web / DB / 文件服务器)
  3. 内存大小 & 是否 SSD
  4. 当前性能瓶颈(CPU / IO / 内存)

我可以帮你直接给出 可执行的优化参数。

0 踩