温馨提示×

ubuntu缓存设置如何优化

小樊
51
2025-10-01 09:36:56
栏目: 智能运维

Ubuntu缓存设置优化方法

1. 清理系统缓存

  • APT缓存清理:使用sudo apt-get clean删除所有已下载的软件包文件(释放/var/cache/apt/archives空间);sudo apt-get autoclean清理不再需要的旧版本软件包;sudo apt-get autoremove删除系统不再使用的孤立软件包(即不再被任何已安装软件依赖的包)。
  • 内存缓存清理:通过sync命令将文件系统缓冲区数据刷新到磁盘,再用echo命令清理缓存:
    • 清理PageCache(页面缓存):echo 1 | sudo tee /proc/sys/vm/drop_caches
    • 清理dentries(目录项)和inodes(索引节点):echo 2 | sudo tee /proc/sys/vm/drop_caches
    • 清理所有缓存(PageCache+dentries+inodes):echo 3 | sudo tee /proc/sys/vm/drop_caches(注:此操作非破坏性,但会暂时降低系统性能,因下次需重新加载数据)。

2. 调整内核缓存参数

  • 优化Swappiness值vm.swappiness参数控制系统使用交换分区的倾向(默认值60,范围0-100)。降低该值(如10-30)可减少系统对交换分区的依赖,提升内存使用效率。临时修改用sudo sysctl -w vm.swappiness=10,永久生效则编辑/etc/sysctl.conf文件,添加vm.swappiness=10
  • 调整脏页面写入策略:通过vm.dirty_background_ratio(后台写入脏页面的内存百分比,默认10%)和vm.dirty_ratio(触发强制写入的脏页面内存百分比,默认20%)控制文件系统缓存。例如,将dirty_background_ratio设为5、dirty_ratio设为15,可减少磁盘I/O次数,提升写入性能。

3. 使用编译缓存工具

  • ccache:缓存编译结果,加速重复编译过程。安装:sudo apt-get install ccache;配置:将CC=ccache gcc添加到环境变量(如~/.bashrc),后续编译时自动使用缓存。
  • sccache:分布式编译缓存工具(支持远程缓存),性能优于ccache。安装:sudo apt-get install sccache;配置同ccache,适用于团队协作或多设备编译场景。

4. 配置内存缓存服务

  • Memcached:分布式内存对象缓存系统,用于提升动态Web应用(如WordPress、Drupal)的性能。安装:sudo apt-get install memcached;配置:编辑/etc/memcached.conf,修改-m参数设置缓存大小(如-m 1024表示1GB),-l参数设置监听地址(如127.0.0.1仅本地访问);重启服务:sudo systemctl restart memcached
  • DNS缓存(dnsmasq):缓存DNS查询结果,减少DNS解析时间。安装:sudo apt-get install dnsmasq;配置:编辑/etc/dnsmasq.conf,设置cache-size=1000(缓存条目数)和ttl=3600(缓存时间,单位秒);重启服务:sudo systemctl restart dnsmasq

5. 优化文件系统缓存

  • 选择合适文件系统:根据工作负载选择文件系统(如SSD用ext4XFS,前者支持noatime挂载选项减少访问时间更新,后者适合高并发场景);调整挂载选项:在/etc/fstab中添加rw,noatime(读写+不更新访问时间),提升文件读写性能。
  • 利用SSD缓存:将/tmp目录挂载到SSD,提升临时文件读写速度。创建/etc/tmpfiles.d/tmp.conf文件,添加内容:D /tmp 1777 root root 10d(设置/tmp目录权限及10天清理周期),并确保/tmp挂载在SSD分区。

6. 定时清理缓存

  • 编写清理脚本(如clear_caches.sh),内容如下:
    #!/bin/bash
    sync
    echo 3 | sudo tee /proc/sys/vm/drop_caches
    
    赋予执行权限:chmod 755 clear_caches.sh;设置定时任务(如每2分钟执行一次):crontab -e,添加*/2 * * * * /path/to/clear_caches.sh(注意:频繁清理可能影响性能,建议根据实际需求调整间隔)。

0