温馨提示×

CentOS Swap内存调优参数设置

小樊
36
2026-01-02 01:18:21
栏目: 智能运维

CentOS Swap 内存调优参数设置

一 基线评估与大小规划

  • 先明确业务类型与稳定性目标:数据库、消息队列等对延迟敏感的业务应尽量少用 Swap;通用业务可保留一定 Swap 作为缓冲。
  • 参考主流建议规划容量(是否启用休眠将显著影响需求):
    • 物理内存 ≤ 2GB:Swap 2×内存;若启用休眠:3×内存
    • 2–8GB:Swap = 内存;若启用休眠:2×内存
    • 8–64GB:Swap ≥ 4GB;若启用休眠:1.5×内存
    • > 64GB:Swap ≥ 4GB,通常不建议启用休眠
  • 实操快速决策(便于落地):
    • ≤ 4GB:Swap 2×内存(不超过 4GB)
    • 4–8GB:Swap = 内存
    • 8–64GB:Swap 8GB
    • 64–256GB:Swap 16GB
  • 注意:不同发行版/内核默认值存在差异,CentOS 7 上 swappiness 常见默认值为 30,CentOS 6 常见为 60;现代大内存服务器不必机械按“倍数”扩容,更应结合负载与稳定性目标设定。

二 启用与持久化 Swap

  • 创建 Swap 文件(示例为 4GB):
    • 分配空间:sudo fallocate -l 4G /swapfile
    • 安全权限:sudo chmod 600 /swapfile
    • 格式化为 Swap:sudo mkswap /swapfile
    • 启用 Swap:sudo swapon /swapfile
    • 验证:sudo swapon --showfree -h
  • 持久化:在 /etc/fstab 追加
    • /swapfile none swap sw 0 0
  • 如需创建 Swap 分区:用 fdisk/parted 建分区 → mkswap <分区>swapon <分区> → 在 /etc/fstab 添加对应条目。

三 核心内核参数调优

  • 调整 Swap 倾向(vm.swappiness)
    • 作用范围 0–100:值越高越倾向使用 Swap;值越低越倾向保留在物理内存。
    • 建议基线:通用服务器可先设为 10;内存充足且延迟敏感可更低(但不建议直接到 0,避免内存紧张时失去缓冲)。
    • 临时生效:sudo sysctl vm.swappiness=10
    • 永久生效:在 /etc/sysctl.conf 添加 vm.swappiness=10 并执行 sysctl -p
  • 调整 VFS 目录项/索引节点缓存回收(vm.vfs_cache_pressure)
    • 作用:控制内核回收 inode/dentry 缓存的积极性;默认 100(回收更快),可先设为 50 以更保守地保留缓存。
    • 临时生效:sudo sysctl vm.vfs_cache_pressure=50
    • 永久生效:在 /etc/sysctl.conf 添加 vm.vfs_cache_pressure=50
  • 说明:swappiness 并非“触发阈值”的精确百分比,而是权重;默认值在 CentOS 7 常见为 30,CentOS 6 常见为 60,调低可明显减少不必要的 Swap 使用。

四 进阶方案与监控回退

  • 启用内存内压缩交换
    • zswap:在内核中做压缩的 Swap 缓存,减少对磁盘 Swap 的访问,适合内存较紧张但存在突发负载的场景。
    • zram:在内存中创建压缩块设备充当 Swap,适合内存较小、可接受一定压缩/回写延迟的环境。
  • 多 Swap 与优先级
    • 可同时配置多个 Swap(分区/文件),通过 swapon -p <优先级> 设置优先级,优先使用更快的介质(如 SSD/NVMe)。
  • 监控与回退
    • 常用命令:free -htopvmstatiostat 观察 Swap 与 I/O;若发现频繁换页或 OOM,先降低业务内存占用、调优应用、再考虑扩容物理内存。
    • 临时关闭/释放 Swap(仅用于应急排障):sudo swapoff -a && sudo swapon -a(确保业务允许短时中断)。

0