1. 查看Swap及内存使用情况
首先确认Swap空间的使用状态和内存占用情况,明确清理方向。常用命令:
free -h:直观显示内存、Swap的总大小、已用空间及剩余空间;swapon --show:列出所有启用的Swap分区/文件及其大小、优先级;top(按f键添加SWAP列)或ps aux --sort=-%mem | head:找出占用Swap最多的进程。2. 临时释放Swap空间(快速缓解压力)
若需立即释放Swap,可通过“关闭-重新启用”Swap的方式,将Swap中的数据换回内存(需确保物理内存充足,否则可能导致OOM)。具体步骤:
sudo swapoff -a(此命令会终止所有使用Swap的进程,建议在业务低峰期操作);sudo swapon -a(恢复Swap启用状态);free -h查看Swap使用量是否归零。3. 调整Swappiness参数(减少Swap使用倾向)
vm.swappiness参数控制内核使用Swap的积极性(默认值60,范围0-100)。降低该值可让系统更倾向于使用物理内存,减少Swap占用。操作方法:
sudo sysctl vm.swappiness=10(例如设置为10,表示内存使用率达90%时才启用Swap);vm.swappiness=10添加到/etc/sysctl.conf文件末尾,执行sudo sysctl -p使配置生效。4. 清理内存缓存(释放物理内存,间接减少Swap使用)
Linux系统会利用空闲内存作为缓存(如页面缓存、dentries/inodes缓存),可通过清理缓存释放物理内存,降低Swap使用概率。命令:
sudo sh -c 'sync; echo 3 > /proc/sys/vm/drop_caches'
sync:将缓存数据同步到磁盘,避免数据丢失;echo 3:清理页面缓存、目录项缓存和inode缓存(echo 1仅清理inode,echo 2仅清理页面缓存)。5. 终止占用Swap的高内存进程(解决根源问题)
若某进程长期占用大量Swap,需定位并终止该进程(谨慎操作,避免影响核心服务)。步骤:
for file in /proc/*/status; do
awk '/VmSwap|Name/{printf $2 " " $3} END{ print ""}' $file;
done | sort -k 2 -n -r | head -n 5
该命令会列出Swap使用量前5的进程(显示进程名和Swap用量);sudo kill -9 <PID>(-9表示强制终止)。6. 扩展Swap空间(长期解决方案)
若物理内存不足且频繁出现Swap满的情况,需扩展Swap空间(优先选择Swap文件,操作更灵活)。常见方法:
sudo fallocate -l 2G /swapfile # 创建2GB空文件
sudo chmod 600 /swapfile # 设置仅root可读写
sudo mkswap /swapfile # 格式化为Swap格式
sudo swapon /swapfile # 启用Swap文件
/swapfile none swap sw 0 0添加到/etc/fstab文件中(重启后自动启用);lvextend扩展逻辑卷,再用mkswap重新格式化;若为物理分区,需使用fdisk/parted调整分区大小,操作较复杂。注意事项
/etc/fstab或调整分区时;free -h查看available内存),否则可能导致系统崩溃;