CentOS Swap使用最佳实践
Swap大小的设置需结合物理内存容量,遵循以下经验值:
Swappiness(vm.swappiness)控制内核使用Swap的倾向,默认值为60(范围0-100)。数值越高,系统越倾向于将内存数据交换到Swap;数值越低,越优先使用物理内存。
# 临时调整(立即生效)
sudo sysctl vm.swappiness=10
# 永久调整(重启后生效)
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# 创建16GB Swap文件(使用fallocate更高效)
sudo fallocate -l 16G /swapfile
# 设置权限(仅root可读写)
sudo chmod 600 /swapfile
# 格式化为Swap
sudo mkswap /swapfile
# 启用Swap
sudo swapon /swapfile
# 开机自动挂载
echo "/swapfile swap swap defaults 0 0" | sudo tee -a /etc/fstab
fdisk/parted创建分区,再用mkswap格式化,最后添加到/etc/fstab。定期监控Swap使用状态,及时发现异常(如Swap使用率持续过高):
free -h(直观显示Swap的总容量、已用/空闲容量);swapon --show或cat /proc/swaps(列出当前启用的Swap分区/文件);vmstat 1(实时查看内存、Swap的交换频率)、top(按Shift+M排序内存占用,找出内存泄漏的进程)。除Swappiness外,还可调整以下内核参数提升Swap性能:
/etc/sysctl.conf,添加:vm.dirty_ratio=10 # 内存中脏页占比达到10%时触发刷新
vm.dirty_background_ratio=5 # 后台刷新线程启动阈值设为5%
执行sudo sysctl -p使设置生效。sudo yum install zram-config -y
sudo systemctl start zram-config
# 调整Zram大小(如4GB)
echo 'ZRAM_DEVICE_SIZE=4G' | sudo tee -a /etc/zram-config.conf
Zram适合内存充足但需减少Swap磁盘写入的场景。vm.swappiness=0并移除/etc/fstab中的Swap条目),提升性能;