在 CentOS(包括 CentOS 7 / 8 / Stream)中,“缓存优化”通常分为 系统级缓存(PageCache / 内存缓存)、磁盘缓存、应用层缓存(如 Nginx、MySQL) 和 DNS / YUM 缓存 等几类。下面按常见场景给你一套实用优化思路。
CentOS 默认使用空闲内存做文件缓存,这是性能友好的,一般不建议手动清理。
free -h
cat /proc/meminfo
关注:
CachedBuffersAvailable# 值越小越倾向使用内存
sysctl vm.swappiness
sysctl -w vm.swappiness=10
持久化:
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p
sysctl vm.dirty_ratio
sysctl vm.dirty_background_ratio
常见优化(数据库服务器):
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5
CentOS 常用:
ext4(默认)xfs(推荐,尤其大文件)XFS 优化挂载参数:
/dev/sdb1 /data xfs defaults,noatime,nodiratime 0 0
mount -o remount,noatime /
vi /etc/yum.conf
keepcache=1
缓存目录:
/var/cache/yum
nginx + yum reporeposynclocation ~* \.(js|css|png|jpg|gif)$ {
expires 30d;
access_log off;
}
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=mycache:10m max_size=10g;
SHOW VARIABLES LIKE 'query_cache%';
⚠️ MySQL 8.0 已移除 query cache
innodb_buffer_pool_size = 物理内存的 60%~70%
查看命中率:
SHOW STATUS LIKE 'Innodb_buffer_pool_read%';
systemctl enable --now systemd-resolved
yum install nscd
systemctl enable --now nscd
✅ 正确做法:
❌ 错误做法:
echo 3 > /proc/sys/vm/drop_caches
(生产环境频繁清缓存 = 性能自杀)
free -h → 内存是否紧张iostat -x 1 → 磁盘是否瓶颈top / htop → CPU / 进程如果你能告诉我:
我可以给你更精准的缓存优化方案。