centos怎样回收利用内存
小樊
34
2025-11-22 00:43:09
CentOS 内存回收与优化指南
一 先判断是否需要回收
- 使用以下命令观察内存与缓存的真实占用:
- 查看概览:
free -h
- 实时观察:
top 或 htop
- 系统级统计:
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、加内存)。