ubuntu缓存如何优化使用
导读:Ubuntu缓存优化使用指南 一 核心原则与监控 Linux 会主动利用空闲内存做 Page Cache 与 Buffer,以提升文件读写性能;当内存紧张时会自动回收缓存,通常无需人工清理。若看到 buff/cache 占用高而可用内存充...
Ubuntu缓存优化使用指南
一 核心原则与监控
- Linux 会主动利用空闲内存做 Page Cache 与 Buffer,以提升文件读写性能;当内存紧张时会自动回收缓存,通常无需人工清理。若看到 buff/cache 占用高而可用内存充足,这并非异常。需要诊断时,可用 **cachestat、cachetop(BCC/eBPF)**查看系统与各进程的缓存命中情况,定位瓶颈与收益。仅在测试或故障排查时,才考虑手动清理缓存。
二 系统层面优化
- 调整内核回收与交换策略
- 适度降低 vm.swappiness(如设为 10),减少换页,优先利用内存缓存:查看值
cat /proc/sys/vm/swappiness;临时设置sudo sysctl vm.swappiness=10;永久写入/etc/sysctl.conf:vm.swappiness=10。 - 调整脏页写回阈值,平衡性能与数据安全:
vm.dirty_background_ratio=5、vm.dirty_ratio=20(写入/etc/sysctl.conf后sudo sysctl -p生效)。
- 适度降低 vm.swappiness(如设为 10),减少换页,优先利用内存缓存:查看值
- 文件系统与 I/O 调度
- 挂载选项:优先使用 noatime/nodiratime 减少元数据写;如为 ext4 且可接受一定风险,可用 data=writeback 提升写性能(权衡元数据一致性)。
- I/O 调度器:SSD/NVMe 推荐 none/noop,HDD 推荐 deadline。查看:
cat /sys/block/sdX/queue/scheduler;临时设置:echo none | sudo tee /sys/block/sdX/queue/scheduler;持久化可用 udev 规则。
- 透明大页(THP)
- 数据库、低延迟场景建议禁用或按需配置 THP,以减少抖动:
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled(按实际环境验证)。
- 数据库、低延迟场景建议禁用或按需配置 THP,以减少抖动:
- 手动清理缓存的正确姿势(仅用于测试/排障)
- 先
sync同步脏页,再清理:- 仅 PageCache:
echo 1 | sudo tee /proc/sys/vm/drop_caches - 仅 dentries/inodes:
echo 2 | sudo tee /proc/sys/vm/drop_caches - 全部可回收缓存:
echo 3 | sudo tee /proc/sys/vm/drop_caches
- 仅 PageCache:
- 注意:清理会导致缓存重建与 I/O 短时飙升,生产环境不建议作为常规操作。
- 先
三 应用与网络缓存
- 内存对象缓存
- Memcached:安装
sudo apt-get install memcached;编辑 /etc/memcached.conf 设置内存如 -m 1024;重启服务。 - Redis:安装
sudo apt-get install redis-server;在 /etc/redis/redis.conf 设置maxmemory 1gb、maxmemory-policy allkeys-lru等策略。
- Memcached:安装
- DNS 缓存
- 使用 dnsmasq 提供本地解析与缓存:安装
sudo apt-get install dnsmasq,在 /etc/dnsmasq.conf 中设置如cache-size=10000(或cache-mem视版本而定),重启服务。
- 使用 dnsmasq 提供本地解析与缓存:安装
- 预取类优化
- preload 可学习常用应用并预加载依赖,提升启动与常用程序响应:安装后在后台运行,观察资源占用与收益后决定是否常驻。
四 磁盘与包缓存清理
- APT 与包缓存
- 清理已下载包文件:
sudo apt clean;仅删旧版本:sudo apt autoclean;移除不再依赖包:sudo apt autoremove。
- 清理已下载包文件:
- 日志与 Snap
- 限制 journald 日志占用:
sudo journalctl --vacuum-time=3d、sudo journalctl --vacuum-size=100M。 - Snap 旧版本可能占空间:清理缓存目录
sudo rm -rf /var/lib/snapd/cache/*,并优先卸载不再使用的 Snap 应用。
- 限制 journald 日志占用:
- 缩略图缓存
- 清理用户缩略图:
rm -rf ~/.cache/thumbnails/*(会自动重建)。
- 清理用户缩略图:
五 场景化建议与验证
- 场景建议
- 桌面响应变慢:启用 preload,适度降低 swappiness,清理 APT 与日志,确保使用 SSD 并优化挂载选项(如 noatime)。
- Web/API 高并发:部署 Redis/Memcached 做热点数据缓存,启用 HTTP 缓存头(ETag/Cache-Control),静态资源使用 CDN。
- 编译构建:使用 ccache/sccache 缓存编译结果,显著缩短重复构建时间。
- 文件传输/大文件处理:依赖内核 Page Cache,使用 SSD、合理调度器(SSD 用 none/noop),并减少不必要的同步与日志写入。
- 验证与回退
- 使用 free、vmstat、iostat 观察内存与 I/O;用 cachestat/cachetop 观察命中率变化;对调度器、挂载选项、THP 等变更,先在测试环境验证并保留回退方案。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu缓存如何优化使用
本文地址: https://pptw.com/jishu/761590.html
