温馨提示×

centos怎样回收利用内存

小樊
34
2025-11-22 00:43:09
栏目: 智能运维

CentOS 内存回收与优化指南

一 先判断是否需要回收

  • 使用以下命令观察内存与缓存的真实占用:
    • 查看概览:free -h
    • 实时观察:tophtop
    • 系统级统计:vmstat 1
    • 详细内存信息:cat /proc/meminfo
  • 要点:Linux 会把未使用的 RAM 用作 Page Cache、dentries、inodes 以提升性能,看到“已用”偏高但 available 充足通常无需手动清理。只有在需要基准测试、排查异常占用或缓存导致问题时,才考虑主动回收。

二 手动释放缓存与可回收对象

  • 执行前先同步数据,避免丢失脏页:sync
  • 仅清理页面缓存:echo 1 > /proc/sys/vm/drop_caches
  • 清理目录项与索引节点缓存:echo 2 > /proc/sys/vm/drop_caches
  • 清理以上全部三类:echo 3 > /proc/sys/vm/drop_caches
  • 说明:上述操作需要 root 权限,写入 /proc/sys/vm/drop_caches 是立即生效的;在生产环境谨慎使用,清理缓存可能带来短时性能下降。

三 终止异常进程与停用不必要服务

  • 找出占用内存最多的进程:ps aux --sort=-%mem | head
  • 结束指定进程(尽量先尝试优雅终止):kill <PID>;必要时 kill -9 <PID>
  • 停用不需要的服务:systemctl stop <service>;若不再需要开机自启:systemctl disable <service>
  • 建议:优先优化或重启有内存泄漏的服务,而不是长期依赖强杀进程。

四 优化内核与系统以减少后续回收压力

  • 调整 Swap 倾向vm.swappiness(默认通常为 60
    • 减少换页、尽量使用物理内存:vm.swappiness=10
    • 更积极使用 Swap(仅在内存紧张且可接受性能下降时):vm.swappiness=80~100
    • 使配置生效:sysctl -p
  • 调整 VFS 缓存压力vm.vfs_cache_pressure(默认通常为 100
    • 降低值可更倾向保留目录项与 inode 缓存:vm.vfs_cache_pressure=50
  • 容器与多租场景:用 cgroups 为关键服务设置内存上限,避免单进程耗尽内存触发 OOM Killer

五 常见误区与建议

  • 误区一:看到 “used” 很高就立刻 drop_caches。纠正:先检查 available,高缓存是正常且有益的,清理只会带来短期波动。
  • 误区二:长期定时清理缓存。纠正:缓存能加速 I/O,定时清理会反复重建缓存,增加开销。
  • 误区三:盲目增大 Swap。纠正:Swap 速度远慢于 RAM,优先优化应用与内存配置,必要时再扩容。
  • 建议:优先做“节流与隔离”(限制服务内存、优化应用、用 cgroups),其次才是“释放与扩容”(清理缓存、增加 Swap、加内存)。

0