一、查看缓存使用情况
优化前需明确当前缓存状态,常用命令如下:
cache列表示文件缓存总量,buff列表示缓冲区缓存);二、清理缓存(临时优化)
CentOS通过/proc/sys/vm/drop_caches接口清理缓存,操作前需先执行sync命令(将内存中的待写入数据同步至磁盘,避免数据丢失):
echo 1 > /proc/sys/vm/drop_caches(适用于内存紧张但需保留目录项/索引节点缓存的场景);echo 2 > /proc/sys/vm/drop_caches(适用于文件系统元数据占用过多的情况);echo 3 > /proc/sys/vm/drop_caches(同时清理页缓存、目录项和索引节点缓存,慎用)。三、调整内核参数(长期优化)
通过修改内核参数优化缓存行为,需编辑/etc/sysctl.conf文件(修改后执行sysctl -p生效):
vm.dirty_ratio(脏页占内存的最大比例,默认20%)和vm.dirty_background_ratio(后台刷脏的阈值,默认10%)。适当增大dirty_ratio(如40%)可减少频繁磁盘写入,提升缓存写入效率;vm.vfs_cache_pressure(默认100,值越高越易回收inode/dentry缓存)。建议设置为50,保留更多文件系统缓存,提升文件访问性能;vm.swappiness(默认60,值越高越易使用Swap)。建议设置为10-30(内存充足时可设为10),减少对Swap的依赖,提升物理内存利用率。四、配置应用层缓存
通过应用层缓存工具减轻后端存储压力,常见方案:
nginx.conf,添加proxy_cache_path指令配置缓存路径(如/tmp/nginx)、大小(max_size 1g)、过期时间(inactive 60m),并启用缓存功能;/etc/varnish/default.vcl,设置缓存大小(shm_size 1g)、后端服务器地址,启动Varnish服务(systemctl start varnish);五、优化文件系统与挂载选项
/etc/fstab文件,在对应挂载点添加noatime选项(如/dev/sda1 / ext4 defaults,noatime 0 1),避免每次文件访问都更新访问时间元数据,减少磁盘I/O;noop或deadline,HDD使用cfq),通过echo noop > /sys/block/sda/queue/scheduler临时修改,永久生效需修改/etc/default/grub中的GRUB_CMDLINE_LINUX参数。六、硬件升级(终极优化)
若软件优化无法满足需求,可通过硬件升级提升缓存性能:
七、监控与维护
建立缓存监控机制,定期分析性能瓶颈:
free -m查看缓存占用,vmstat 1监控缓存变化,iostat -x 1查看磁盘I/O负载;/var/log/messages)和应用日志,定位缓存未命中或性能下降的原因;0 0 1 * * echo 3 > /proc/sys/vm/drop_caches)。