1. 调整Swappiness参数
Swappiness是控制内核使用Swap频率的关键参数,取值范围0-100(0表示尽量避免使用Swap,100表示积极使用)。默认值通常为60,对于大多数生产环境,建议调整为10-60(内存充足时可设为10,内存紧张时可设为60)。调整方法:临时修改用sudo sysctl vm.swappiness=10,永久生效需编辑/etc/sysctl.conf文件添加vm.swappiness=10,然后运行sudo sysctl -p使设置生效。
2. 合理设置Swap大小
Swap大小需根据物理内存调整,避免过大或过小:
3. 使用Swap文件替代分区(灵活扩展)
相较于传统Swap分区,Swap文件更灵活,可随时调整大小且无需重新分区。创建步骤:
dd命令创建文件(如2GB):sudo dd if=/dev/zero of=/swapfile bs=1M count=2048;sudo mkswap /swapfile;sudo swapon /swapfile;/etc/fstab文件添加/swapfile swap swap defaults 0 0。4. 采用现代Swap技术(zram/zswap)
sudo modprobe zram,然后通过/sys/class/zram-control/hot_add添加设备并设置大小。/etc/default/grub,在GRUB_CMDLINE_LINUX中添加zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=20,更新GRUB后重启。5. 监控与定期维护Swap使用
定期监控Swap使用情况,及时发现问题并调整:
free -h命令查看Swap总大小、已用空间和剩余空间;swapon --show或cat /proc/swaps命令查看当前启用的Swap设备及使用详情;vmstat 1命令监控Swap I/O情况(关注si(Swap In)和so(Swap Out)列,数值过高表示频繁使用Swap)。swapoff /swapfile后重新创建),确保Swap高效使用。6. 优化应用与系统配置(减少Swap依赖)
通过优化应用和系统配置,降低对Swap的需求:
-Xmx参数),减少内存泄漏;echo 3 > /proc/sys/vm/drop_caches命令释放PageCache、Slab等缓存(不影响正在运行的程序);systemctl stop <service_name>),释放内存;zswap或zram,减少内存占用。7. 选择合适的存储介质(SSD优先)
若系统使用机械硬盘(HDD),建议将Swap放置在SSD上(需提前创建Swap分区或文件在SSD分区),因为SSD的随机读写速度远高于HDD,能显著提升Swap操作性能。注意:SSD有写入寿命限制,需权衡性能与寿命(可通过fstrim命令定期整理SSD)。