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 --show 与 free -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 -h、top、vmstat、iostat 观察 Swap 与 I/O;若发现频繁换页或 OOM,先降低业务内存占用、调优应用、再考虑扩容物理内存。
- 临时关闭/释放 Swap(仅用于应急排障):
sudo swapoff -a && sudo swapon -a(确保业务允许短时中断)。