温馨提示×

怎样优化centos的内存清理

小樊
36
2025-12-13 16:14:06
栏目: 智能运维

CentOS 内存清理与优化实操指南

一 先判断是否需要清理

  • 使用命令查看内存概况:free -htopvmstat 1cat /proc/meminfo。重点关注 available 字段,它比 free 更能反映“还能分配给新应用”的内存量。Linux 会利用空闲内存做 Page Cache/Buffers 以提升性能,通常无需人为清理;仅当 available 偏低且系统变慢、或你需要做基准测试时才考虑手动释放缓存。

二 安全释放缓存与可回收对象

  • 手动释放缓存(仅在必要时执行,建议业务低峰期):
    • 步骤:sync(确保数据落盘);随后写入 drop_caches 值:
      • echo 1 > /proc/sys/vm/drop_caches(仅页面缓存)
      • echo 2 > /proc/sys/vm/drop_caches(仅目录项与 inode)
      • echo 3 > /proc/sys/vm/drop_caches(页面缓存 + 目录项 + inode)
    • 风险提示:会短时增加磁盘 I/O,可能导致性能波动;仅在确认确有需要时使用。
  • 清理可回收的 slab(谨慎):
    • 查看:slabtopcat /proc/slabinfo
    • 仅在明确无业务影响时,按需在 /proc/sys/vm/drop_caches 释放可回收对象;避免在生产环境频繁操作。
  • 清理 Swap(仅在磁盘 I/O 空闲且内存充足时):
    • 步骤:syncswapoff -a && swapon -a。前提是可用内存需大于已用 Swap,否则可能引发 OOM 或长时间卡顿。

三 内核参数与系统调优

  • 调整 vm.swappiness(控制内核换出倾向):
    • 建议值:10(降低对 Swap 的依赖,优先使用物理内存;数据库、容器等内存敏感场景常用)。
    • 持久化:编辑 /etc/sysctl.conf,加入 vm.swappiness=10,执行 sysctl -p 生效。
  • 调整 vm.vfs_cache_pressure(VFS 缓存回收倾向):
    • 建议值:50(默认通常为 100;降低该值可更倾向保留目录项/索引节点缓存,提升文件系统性能)。
  • 设置 vm.min_free_kbytes(保留最小空闲内存,避免内存紧张时抖动):
    • 建议值:按内存大小设置,例如 64GB 内存可先试 65536(即 64MB);过小易抖动,过大浪费内存。
  • 透明大页(THP)与数据库/低延迟场景:
    • 建议数据库等低延迟负载将 THP 设为 neverecho never > /sys/kernel/mm/transparent_hugepage/enabled(重启后失效,需写入 /etc/rc.local 或 systemd 服务持久化)。
  • 可选:启用内存压缩(如 zswap/zram,视内核与发行版支持而定),用于缓解内存压力与抖动。

四 应用与服务侧优化

  • 关闭不必要的服务与自启项:systemctl list-unit-files --state=enabled 查看;对不需要的服务执行 systemctl disable --now <svc>
  • 限制服务内存:对关键服务设置 systemd 内存上限,例如在服务单元或 /etc/systemd/system.conf 中设置 DefaultMemoryLimit=...,防止单服务耗尽内存。
  • 数据库与中间件(如 MySQL/PostgreSQL/Redis):
    • 调整缓存/缓冲池大小(如 innodb_buffer_pool_size、shared_buffers、maxmemory),避免超过物理内存的 70%–80%(需为系统与其他服务预留)。
    • 开启慢查询日志与监控,及时识别异常 SQL 或连接泄漏。
  • 桌面环境优化:服务器场景建议使用 Server/Minimal 安装,或切换到 LXDE/XFCE 等轻量桌面,减少 GUI 占用。

五 监控与容量规划

  • 实时监控与定位:
    • free -htop/htop(按 %MEM 排序)、vmstat 1pmap -x <PID>cat /proc/<PID>/status/proc/meminfoslabtop
  • 容量与稳定性:
    • 若频繁发生 swap 或 OOM,优先扩容 物理内存;其次按需扩展 Swap(文件或分区)。
    • 扩展 Swap 文件示例:
      • fallocate -l 2G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile
      • 持久化:在 /etc/fstab 追加 /swapfile none swap sw 0 0
  • 自动化与维护:
    • 不建议长期定时清理缓存(会干扰内核自优化);仅在维护窗口或性能异常时手动执行。
    • 使用 logrotate 管理日志体积,避免日志占用过多内存/磁盘并影响性能。

0