Ubuntu缓存优化策略汇总
APT缓存会占用大量磁盘空间(尤其是频繁安装/卸载软件时),定期清理可释放空间。常用命令:
sudo apt-get clean:删除所有已下载的软件包文件(位于/var/cache/apt/archives);sudo apt-get autoclean:清理不再需要的旧版本软件包(仅保留当前安装版本的缓存);sudo apt-get autoremove:删除系统不再使用的孤立软件包(即不再被任何已安装软件依赖的包)。旧内核文件会占用/boot分区空间(该分区通常较小),导致无法升级内核或系统无法启动。操作步骤:
/boot分区使用情况:df -h /boot(若使用率超过80%,需清理);sudo apt-get purge linux-image-<version>(替换<version>为旧内核版本号,如linux-image-5.15.0-86-generic);sudo apt-get purge linux-headers-<version>。编译大型项目时,缓存编译结果可大幅缩短编译时间:
export PATH="/usr/lib/ccache:$PATH",即可自动缓存编译结果;sudo apt-get install sccache)。内存缓存可将频繁访问的数据存储在内存中,提升访问速度:
/etc/memcached.conf,修改-m参数设置缓存大小(如-m 1024表示1GB内存),重启服务:sudo systemctl restart memcached;/etc/dnsmasq.conf),设置cache-size=1000(缓存条目数)和cache-mem=512(缓存内存大小,单位MB),重启服务:sudo systemctl restart dnsmasq。Linux系统会自动使用空闲内存作为缓存(如PageCache、dentries、inodes),但手动清理可快速释放内存(不影响正在运行的程序):
sudo sync && echo 1 | sudo tee /proc/sys/vm/drop_caches;sudo sync && echo 2 | sudo tee /proc/sys/vm/drop_caches;sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches(sync命令用于将未写入磁盘的数据同步到磁盘,避免数据丢失)。vm.swappiness参数控制系统使用交换分区(swap)的偏好程度(默认值60,范围0-100)。值越高,系统越倾向于使用swap(当内存不足时,会导致性能下降);值越低,系统越倾向于保留内存(适合内存充足的场景)。优化方法:
sudo sysctl -w vm.swappiness=10(设置为10,减少swap使用);/etc/sysctl.conf文件,添加vm.swappiness=10。文件系统缓存(如ext4、XFS的缓存)对I/O性能影响较大,可通过以下方式优化:
vm.dirty_background_ratio(后台写入脏页面的内存比例,默认10%)和vm.dirty_ratio(触发强制写入的脏页面比例,默认20%),降低这两个值可减少写入延迟(如设置为5和10);noop(无调度)或deadline(低延迟)调度器(通过lsblk -f查看设备,cat /sys/block/sda/queue/scheduler查看当前调度器,修改/sys/block/sda/queue/scheduler文件选择调度器)。SSD的高速读写性能可用于加速频繁访问的数据:
/tmp目录挂载到SSD:编辑/etc/fstab文件,添加tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0(将/tmp挂载为内存文件系统,适合临时文件);bcache或flashcache工具将SSD作为机械硬盘的缓存(适合机械硬盘用户,提升读写速度)。通过定时任务(cron)定期执行清理操作,避免缓存积累:
crontab -e;0 3 * * * apt-get clean && sync && echo 3 > /proc/sys/vm/drop_caches
实时监控缓存使用情况,及时发现异常:
free -m:查看内存和缓存使用情况(重点关注buff/cache列);top/htop:查看进程缓存占用(按M键按内存排序);vmstat 1:查看系统级缓存统计(如cache表示PageCache,buff表示缓冲区缓存)。