centos缓存优化实践
导读:一、查看缓存使用情况 优化前需明确当前缓存状态,常用命令如下: free -h:查看内存使用概况(总内存、已用/空闲内存、缓冲区与缓存占用); vmstat 1:监控虚拟内存统计信息(cache列表示文件缓存总量,buff列表示缓冲区缓存...
一、查看缓存使用情况
优化前需明确当前缓存状态,常用命令如下:
- free -h:查看内存使用概况(总内存、已用/空闲内存、缓冲区与缓存占用);
- vmstat 1:监控虚拟内存统计信息(
cache
列表示文件缓存总量,buff
列表示缓冲区缓存); - iostat -x 1:分析磁盘I/O负载(间接反映缓存对磁盘操作的缓解效果)。
二、清理缓存(临时优化)
CentOS通过/proc/sys/vm/drop_caches
接口清理缓存,操作前需先执行sync
命令(将内存中的待写入数据同步至磁盘,避免数据丢失):
- 清理页缓存(PageCache):
echo 1 > /proc/sys/vm/drop_caches
(适用于内存紧张但需保留目录项/索引节点缓存的场景); - 清理目录项和索引节点缓存(dentry/inode):
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缓存:编辑
nginx.conf
,添加proxy_cache_path
指令配置缓存路径(如/tmp/nginx
)、大小(max_size 1g
)、过期时间(inactive 60m
),并启用缓存功能; - Varnish缓存:编辑
/etc/varnish/default.vcl
,设置缓存大小(shm_size 1g
)、后端服务器地址,启动Varnish服务(systemctl start varnish
); - 内存缓存:使用Redis或Memcached存储频繁访问的数据(如数据库查询结果、会话信息),减少对磁盘或数据库的直接访问。
五、优化文件系统与挂载选项
- 选择高效文件系统:优先使用XFS(支持高并发、大文件处理)或Btrfs(支持快照、压缩),替代传统的ext4文件系统(尤其适合大量小文件场景);
- 启用noatime挂载:修改
/etc/fstab
文件,在对应挂载点添加noatime
选项(如/dev/sda1 / ext4 defaults,noatime 0 1
),避免每次文件访问都更新访问时间元数据,减少磁盘I/O; - 调整IO调度器:根据磁盘类型选择调度器(如SSD使用
noop
或deadline
,HDD使用cfq
),通过echo noop > /sys/block/sda/queue/scheduler
临时修改,永久生效需修改/etc/default/grub
中的GRUB_CMDLINE_LINUX
参数。
六、硬件升级(终极优化)
若软件优化无法满足需求,可通过硬件升级提升缓存性能:
- 增加物理内存:内存是缓存的基础,增加内存可直接扩大文件缓存容量,减少磁盘I/O;
- 使用SSD:SSD的随机读写速度远高于HDD,作为系统盘或缓存盘可显著提升缓存响应速度。
七、监控与维护
建立缓存监控机制,定期分析性能瓶颈:
- 实时监控:使用
free -m
查看缓存占用,vmstat 1
监控缓存变化,iostat -x 1
查看磁盘I/O负载; - 日志分析:定期检查系统日志(
/var/log/messages
)和应用日志,定位缓存未命中或性能下降的原因; - 定期清理:通过cron任务定期清理过期缓存(如每月1日清理所有缓存:
0 0 1 * * echo 3 > /proc/sys/vm/drop_caches
)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos缓存优化实践
本文地址: https://pptw.com/jishu/718455.html