Linux缓存主要分为三类,直接影响系统性能:
在调整前,需明确当前缓存的使用状态,常用工具:
free -h:快速查看内存使用概况(buff/cache列表示缓存总量,available列表示可用内存,包括未被缓存占用的空闲内存)。/proc/meminfo:查看详细缓存信息(如Cached字段为页缓存大小,Buffers字段为缓冲区缓存大小)。vmstat 1:实时监控内存、缓存的变化(cache列表示页缓存,buff列表示缓冲区缓存)。htop/glances:图形化工具,更直观地展示缓存占用及系统负载。通过调整以下参数,可优化缓存的使用效率:
vm.swappiness:控制内核使用交换空间(Swap)的倾向(范围0-100,默认60)。
10以下(如vm.swappiness=10);内存紧张的服务器(如<4GB),可适当调高(如30),但避免频繁Swap导致性能下降。vm.dirty_ratio & vm.dirty_background_ratio:控制脏页(未写入磁盘的缓存数据)的比例。
dirty_ratio:当脏页占总内存的比例达到该值时,内核会强制同步写入磁盘(阻塞进程);dirty_background_ratio:当脏页占比达到该值时,内核会在后台异步写入磁盘(不阻塞进程)。dirty_ratio=10、dirty_background_ratio=5(减少脏页堆积);业务服务器(如Web)可设置为dirty_ratio=20、dirty_background_ratio=10(平衡性能与数据安全)。vm.vfs_cache_pressure:控制内核回收dentry和inode缓存的倾向(范围0-100,默认100)。
50以下;内存紧张的服务器,可设置为100(强制回收缓存)。若需临时释放缓存(如测试场景),可使用以下命令:
sync; echo 1 > /proc/sys/vm/drop_caches(sync将缓存数据写入磁盘,避免数据丢失)。sync; echo 2 > /proc/sys/vm/drop_caches。sync; echo 3 > /proc/sys/vm/drop_caches。不同应用的缓存需求差异较大,需针对性调整:
vm.swappiness=10)。dirty_ratio=10、dirty_background_ratio=5),确保数据及时写入磁盘。vm.nr_hugepages=1024)。vm.swappiness=10),缓存静态文件(如HTML、CSS、JS),减少磁盘I/O。vfs_cache_pressure=50,保留更多文件缓存(提升文件访问速度)。vfs_cache_pressure=50,保留更多dentry/inode缓存(提升文件路径解析速度)。noatime挂载选项(如/dev/sda1 /mnt/nfs ext4 defaults,noatime 0 1),减少访问时间更新带来的磁盘写入。调整后,需通过以下方式验证效果:
sysbench(测试CPU、内存、磁盘性能)、fio(测试磁盘I/O)、ab(测试Web服务器性能)等工具,对比调整前后的性能变化。top、htop中的CPU、内存使用率,vmstat中的cache、buff变化,确保调整后系统负载稳定(无频繁Swap、内存溢出等问题)。