centos缓存如何提高效率
小樊
39
2025-12-15 09:13:51
CentOS 缓存优化与提效实践
一 基线评估与监控
- 观察内存与缓存:使用 free -h 查看 buff/cache 与可用内存;用 vmstat 1 观察 si/so(换入/换出)是否频繁;用 iostat -x 1 查看 await、r/s、w/s、util 判断 I/O 压力。目标是让 cache 有效利用空闲内存、尽量减少 swap 与 I/O 等待。
- 识别热点与瓶颈:结合应用日志与监控,确认是读多(适合 Page Cache)还是写多(关注脏页刷写与后端存储能力),再决定调优方向。
二 文件系统与内核页缓存优化
- 减少元数据开销:对不需要访问时间的目录使用 noatime 挂载选项,降低 inode/dentry 更新频率。示例:mount -o remount,noatime /your/mount/point。
- 调整脏页阈值与回写节奏:适度提高 vm.dirty_background_ratio 与 vm.dirty_ratio 可提升写缓冲、减少同步刷写带来的卡顿;降低 vm.dirty_writeback_centisecs 与 vm.dirty_expire_centisecs 可更快把脏页写回,降低突发尖峰。示例(需按负载测试):
- echo 40 > /proc/sys/vm/dirty_ratio
- echo 10 > /proc/sys/vm/dirty_background_ratio
- echo 100 > /proc/sys/vm/dirty_writeback_centisecs
- echo 3000 > /proc/sys/vm/dirty_expire_centisecs
- 保留 VFS 缓存:适度降低 vm.vfs_cache_pressure(默认 100),减少目录项与索引节点被回收的倾向,提高路径解析与元数据命中。示例:echo 50 > /proc/sys/vm/vfs_cache_pressure。
- 交换倾向:在内存充足时降低 vm.swappiness(默认 60)以减少换页;若内存紧张再适度提高,避免抖动。
- 持久化:将调整写入 /etc/sysctl.conf 并执行 sysctl -p 生效。
三 分层与内存加速
- 利用 tmpfs 加速临时数据:将热点临时目录(如 /tmp、会话目录)放到 tmpfs,示例(按内存与业务调整大小):
- echo “tmpfs /tmp tmpfs defaults,size=1G 0 0” >> /etc/fstab
- mount -o remount /tmp
- 使用 SSD 作为 HDD 的缓存层:通过 bcache 将热点数据自动迁移到 SSD,显著降低随机 I/O 延迟。示例:
- yum install -y bcache-tools
- make-bcache -C /dev/sdb -B /dev/sdc(注意数据清空风险)
- cat /sys/fs/bcache/ 查看缓存集 UUID
- echo writeback > /sys/fs/bcache//cache_mode(性能优先;掉电有风险,建议配 UPS)
- mkfs.ext4 /dev/bcache0 && mount /dev/bcache0 /data
- 应用层内存缓存:部署 memcached 或 Redis 承载热点数据,减少后端数据库与磁盘访问。以 memcached 为例:
- yum install -y memcached libevent libevent-devel
- 编辑 /etc/sysconfig/memcached,设置 CACHESIZE=“1GB”,OPTIONS 绑定 127.0.0.1
- systemctl restart memcached && systemctl restart httpd
四 应用与 Web 层缓存
- Nginx 反向代理缓存:启用磁盘层缓存,示例:
- proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
- 在 server/location 中使用:proxy_cache my_cache; 并设置缓存有效期规则。
- Varnish:在 /etc/varnish/default.vcl 中配置缓存大小、后端与健康检查,启用后通过 systemctl 启动与开机自启。
五 安全变更与常见误区
- 不要频繁清理缓存:执行 sync && echo 3 > /proc/sys/vm/drop_caches 仅用于问题排查或基准测试,生产环境会直接降低命中率与性能。
- 调参循序渐进:每次只变更少量参数,配合 监控与压测 验证;变更前备份配置,变更后在低峰窗口观察稳定性。
- 权衡一致性与性能:如 bcache writeback 模式性能最佳但存在掉电风险;对强一致场景优先 writethrough 或完善断电保护。