CentOS 常见回收策略概览
在 CentOS 中,“回收”通常涵盖三类:内存回收、磁盘空间回收与应用程序的垃圾回收。下面按场景说明其工作机制与常用做法,便于快速定位与优化。
内存回收机制
- 内核通过页回收自动管理内存,回收对象包括 pagecache(页缓存)、dentries(目录项缓存) 与 inodes(索引节点缓存)。当内存紧张时,内核基于 LRU(最近最少使用) 等策略优先回收不活跃页面;可通过 /proc/sys/vm/drop_caches 手动释放缓存(仅在必要时使用,避免影响性能)。同时,内核通过 kswapd 按阈值回收页面,必要时使用 swap;交换倾向由 vm.swappiness 控制(默认值因版本而异,常见为 60,降低该值可减少换入换出)。示例:查看与调整 swappiness(临时生效)为 10:cat /proc/sys/vm/swappiness;sudo sysctl -w vm.swappiness=10;永久生效:在 /etc/sysctl.conf 中添加 vm.swappiness=10 并执行 sysctl -p。
磁盘空间回收机制
- 包管理与缓存:清理 YUM/DNF 缓存(如 yum clean all)、删除无用依赖(yum autoremove)、移除不再需要的旧内核(先保留最新 2–3 个版本,再用 yum remove 删除旧版)。日志与临时文件:使用 logrotate 进行日志轮转与压缩归档,必要时截断或清理 /var/log/ 下大日志;清理 /tmp 与 /var/tmp 临时文件;查找并删除大文件(如 find / -type f -size +100M);分析空间占用(如 du、ncdu)。容器场景:如运行 Kubernetes,kubelet 默认约每 1 分钟清理已退出容器、每 5 分钟清理未使用镜像(参数可配置)。
应用程序垃圾回收
- 若指的是应用层(如 Java)的垃圾回收,CentOS 并不提供统一策略,需按具体运行时调整。例如通过 -Xmx/-Xms 设置堆大小,选择并行/CMS/G1 等收集器并调节年轻代/老年代比例与触发阈值,以降低停顿或提高吞吐。
实践建议
- 先监控再回收:用 top/vmstat/sar 观察内存与 I/O,用 du/ncdu 定位大文件与目录;优先使用“日志轮转 + 压缩归档”而非粗暴删除;清理缓存与临时文件前先执行 sync;删除旧内核前确认 /boot 分区余量并保留至少 2–3 个可启动内核;任何删除与分区调整前务必做好 备份。