ubuntu

ubuntu swap占用高怎么处理

小樊
34
2025-06-25 08:06:43
栏目: 智能运维

当Ubuntu系统的swap占用过高时,可能会导致系统性能下降。以下是一些处理swap占用高的方法:

检查Swap使用情况

首先,使用以下命令查看当前Swap空间的使用情况:

free -h

或者

sudo swapon --show

调整Swappiness参数

  1. 临时调整

    使用以下命令临时将swappiness值设置为较低的值(例如10):

    sudo sysctl vm.swappiness=10
    
  2. 永久调整

    编辑 /etc/sysctl.conf 文件,添加或修改以下行:

    vm.swappiness=10
    

    然后运行以下命令使更改生效:

    sudo sysctl -p
    

增加物理内存

如果系统的物理内存不足,增加物理内存是最直接的解决方案。这可以通过升级硬件或清理不必要的应用程序来实现。

增加Swap空间

如果增加物理内存不可行或不足以解决问题,可以考虑增加Swap空间:

创建Swap文件

  1. 使用以下命令创建一个指定大小的swap文件(例如4GB):

    sudo fallocate -l 4G /swapfile
    
  2. 设置文件权限:

    sudo chmod 600 /swapfile
    
  3. 格式化Swap文件:

    sudo mkswap /swapfile
    
  4. 启用Swap文件:

    sudo swapon /swapfile
    
  5. 永久启用

    将以下内容添加到 /etc/fstab 文件中,以便系统在启动时自动启用:

    /swapfile none swap sw 0 0
    

创建Swap分区

如果系统已经有Swap分区,可以使用以下命令查看当前Swap情况:

sudo swapon --show

格式化Swap分区:

sudo mkswap /dev/nvme0n1p6

激活Swap分区:

sudo swapon /dev/nvme0n1p6

将Swap分区添加到 /etc/fstab 文件中,以便系统启动时自动加载:

echo '/dev/nvme0n1p6 none swap sw 0 0' | sudo tee -a /etc/fstab

分析和优化占用Swap的进程

使用以下命令可以找到占用swap的进程:

for proc in $(find /proc -maxdepth 1 -type d -regex "/proc/[0-9]"); do
    pid=$(basename $proc)
    cmd=$(cat $proc/cmdline 2>/dev/null | tr '\0' ' ')
    swap=$(awk '/VmSwap/ {print $2}' $proc/status 2>/dev/null)
    if [ "$swap" != "" ] && [ "$swap" -gt 0 ]; then
        echo "PID: $pid Swap: $swap KB CMD: $cmd"
    fi
done | sort -k4 -n -r | head -10

找到占用swap较多的进程后,可以考虑优化这些进程的内存使用或重启这些进程。

释放系统缓存

使用以下命令释放无用的缓存,腾出更多物理内存:

sudo sync
sudo sysctl vm.drop_caches

通过上述方法,可以有效降低swap使用,提高系统性能。根据具体情况选择合适的优化策略。

0
看了该问题的人还看了