Linux系统的缓存机制涉及内核参数、文件系统挂载选项、应用程序配置等多个层面,不同类型的缓存设置位置有所差异,以下是常见场景的详细说明:
系统内核的缓存参数(如脏页写回阈值、目录项缓存回收倾向等)主要通过**/etc/sysctl.conf**文件配置(永久生效),也可通过/proc/sys/vm/目录下的虚拟文件临时调整(立即生效,重启后失效)。
/etc/sysctl.conf:用于持久化内核缓存参数(如vm.dirty_ratio、vm.dirty_background_ratio、vm.vfs_cache_pressure等),修改后需执行sudo sysctl -p使配置生效。/proc/sys/vm/:动态调整内核缓存参数的虚拟目录,例如:
vm.dirty_ratio(脏页占总内存比例,超过则触发写回):echo 40 > /proc/sys/vm/dirty_ratiovm.dirty_background_ratio(后台写回脏页的阈值):echo 10 > /proc/sys/vm/dirty_background_ratiovm.vfs_cache_pressure(目录项/inode缓存回收倾向,值越高回收越积极):echo 50 > /proc/sys/vm/vfs_cache_pressure。文件系统缓存(如noatime、nodiratime)通过**/etc/fstab**文件配置(永久生效),修改后需重新挂载文件系统或重启系统。
/etc/fstab:在挂载选项中添加noatime(禁用文件访问时间更新)、nodiratime(禁用目录访问时间更新)或relatime(减少访问时间更新频率),例如:UUID=your-uuid / ext4 defaults,noatime,nodiratime 0 1
sudo mount -o remount /mount_point可立即应用更改。不同应用程序的缓存设置位于其各自的配置目录中,以下是常见示例:
/etc/apt/sources.list和/etc/apt/sources.list.d/(配置缓存策略,如Acquire::http::Cache-Limit "100000000"设置HTTP缓存大小)。/etc/nginx/nginx.conf(配置代理缓存路径、大小及过期时间),例如:http {
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
server {
location / {
proxy_cache my_cache;
proxy_pass http://backend;
}
}
}
修改后需重启Nginx(sudo systemctl restart nginx)。数据库的缓存(如查询缓存、缓冲池)通过其自身的配置文件设置:
/etc/mysql/my.cnf或/etc/my.cnf(配置query_cache_size、innodb_buffer_pool_size等参数)。/etc/postgresql/<version>/main/postgresql.conf(配置shared_buffers、work_mem等参数)。/etc/redis/redis.conf(配置maxmemory、maxmemory-policy等参数)。浏览器缓存由浏览器自身管理,配置文件位于用户个人目录下:
~/.mozilla/firefox/profiles.ini(通过about:config界面调整缓存大小)。~/.config/google-chrome/Default/Preferences(通过chrome://settings/clearBrowserData清理缓存,或通过about:flags调整缓存策略)。需要注意的是,修改配置文件前务必备份原始文件,避免误操作导致系统异常;部分配置(如/etc/sysctl.conf)需重启服务或系统才能生效,而/proc/sys/vm/下的参数可立即生效但重启后失效。生产环境中调整缓存参数时,建议先进行测试,确保不会影响系统稳定性。