1. 调整Swappiness参数(关键优化项)
Swappiness是控制内核使用Swap倾向的核心参数,取值范围0-100(默认60)。值越高,系统越倾向于将内存数据交换到Swap空间,即使物理内存仍有剩余;值越低,系统越优先保留物理内存。对于大多数服务器场景,建议将其设置为10-30(内存充足时可设为10),以减少不必要的磁盘I/O。操作方法:
sudo sysctl vm.swappiness=10
/etc/sysctl.conf
,添加vm.swappiness=10
,然后执行sudo sysctl -p
使配置生效。2. 优化Swap空间大小与类型
fallocate
命令创建Swap文件时,指定SSD挂载点(如/mnt/ssd/swapfile
)。3. 使用压缩型Swap技术(zram/zswap)
压缩型Swap技术通过在内存中创建压缩的Swap空间,减少对磁盘的依赖,提升Swap性能:
sudo yum install zram-config # CentOS 7/8可用
sudo systemctl start zram-config
echo 'ZRAM_DEVICE_SIZE=4G' | sudo tee -a /etc/zram-config.conf
/etc/default/grub
,添加zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=20
,然后更新GRUB并重启)。4. 合理配置多个Swap分区/文件
/swapfile1
、/swapfile2
),系统会通过轮询方式分配交换操作,平衡磁盘I/O负载,提升整体效率。swapon -p
命令为不同Swap设备设置优先级(数值越高,优先级越高)。例如,将SSD上的Swap优先级设为100,HDD上的设为10:sudo swapon -p 100 /dev/sda1 # SSD上的Swap分区
sudo swapon -p 10 /mnt/hdd/swapfile # HDD上的Swap文件
永久生效需在/etc/fstab
中添加pri=value
选项(如/dev/sda1 none swap sw,pri=100 0 0
)。5. 监控与定期维护
free -h
查看Swap总量及使用量,vmstat 1
监控Swap I/O(si
/so
列,分别表示每秒从磁盘交换到内存/从内存交换到磁盘的数据量),iostat -x 1
查看磁盘I/O负载(重点关注await
、%util
指标,若%util
接近100%,说明磁盘瓶颈)。sudo swapoff /swapfile # 禁用Swap文件
sudo rm /swapfile # 删除文件
编辑/etc/fstab
移除对应行,避免重启后自动启用。6. 减少系统对Swap的依赖
innodb_buffer_pool_size
、Java应用的-Xmx
参数),限制其内存占用;关闭不必要的后台服务(如firewalld
、NetworkManager
),释放内存资源。