云服务器设置swap交换分区并合理调整SWAP使用频度

蓝调 2025-06-07 PM 12℃ 0条

购买了阿里云轻量34的服务器(2C2G),发现内存经常报警,CPU高负荷。这在美国服务器是不会发生的,而且我用的美国服务器还是1c1g的。
找了很久的原因,最终发现阿里云默认不开启swap交换内存。

可以通过命令 swapon --show 查看,如果回显信息为空,表示系统没有swap分区,您可以根据需要配置swap分区。
执行以下命令,创建用于交换分区的文件

sudo dd if=/dev/zero of=/var/swap bs=1M count=1024
其中: of的值/var/swap是变量,表示交换分区的标识,请您自定义设置,该变量值不能和已有分区标识相同。
bs和count的值表示创建的交换文件的大小,您可以自定义设置,该命令中bs=1M count=1024表示设置交换文件的大小为1 GB。

执行以下命令,将文件格式化为swap分区。

sudo mkswap /var/swap

执行以下命令,开启swap分区。

sudo chmod 600 /var/swap
sudo swapon /var/swap

执行以下命令,验证swap分区是否已开启。

swapon --show

开启后发现,依然swap未被使用,原因是阿里云默认不适用swap分区,以增加硬盘寿命,但是对于用户非常不友好。
在Linux系统中,可以通过设置swappiness参数来确定系统对swap分区的使用原则,swappiness参数取值范围为0到100。

swappiness值越低,表示最大限度地使用物理内存,物理内存使用完毕后,才会使用swap分区。
swappiness值越高,表示积极地使用swap分区,并且把内存中的数据及时地置换到swap分区。

编辑/etc/sysctl.conf文件,以物理内存少于50%时才使用swap分区为例,需要调整以下参数值。

vm.swappiness=50

保存并退出,然后执行以下命令使配置生效。

sudo sysctl -p

执行以下命令,验证swappiness参数配置是否生效。

cat /proc/sys/vm/swappiness

如果显示vm.swappiness=50则表示已经成功。

参考资料:

https://help.aliyun.com/zh/ecs/support/how-do-i-configure-the-swap-partition-of-a-linux-instance

标签: 阿里云, SWAP

非特殊说明,本博所有文章均为博主原创。

评论啦~


Title - Artist
0:00