当前位置: 代码迷 >> 综合 >> 【阿里云】阿里云主机设置swap,防止OOM Killer
  详细解决方案

【阿里云】阿里云主机设置swap,防止OOM Killer

热度:28   发布时间:2024-01-26 02:39:52.0

简介:

swap交换空间实际上是一个磁盘分区,在安装操作系统时,默认划分出物理内存的1~2倍空间用于交换分区,它类似于 Windows 的虚拟内存。系统会把一部分硬盘空间虚拟成内存使用,将系统内非活动内存换页到 SWAP,以提高系统可用内存。

阿里云ECS服务器的swap功能默认时没有开启的,因为swap功能会增加磁盘IO的占用率,降低磁盘寿命和性能,另一方面也可以借此让用户购买更大的内存。启用swap分区,一定程度上可以降低物理内存的使用压力,但如果云服务器上运行的应用确实需要更多的内存,还是需要购买物理内存。

另外,Swap 分区的数量对性能也有很大的影响。因为 Swap 交换的操作是磁盘 IO 的操作,如果有多个 Swap 交换区,Swap 空间的分配会以轮流的方式操作于所有的 Swap,这样会大大均衡 IO 的负载,加快 Swap 交换的速度。如果只有一个交换区,所有的交换操作会使交换区变得很忙,使系统大多数时间处于等待状态,效率很低。用性能监视工具就会发现,此时的 CPU 并不很忙,而系统却慢。这说明,瓶颈在 IO 上,依靠提高 CPU 的速度是解决不了问题的

 

1、查看是否启用swap分区

[root@master ~]#  free -mtotal        used        free      shared  buff/cache   available
Mem:          15363       13529         168         521        1665         880
Swap:             0           0           0

   默认swap 都是0,即没启用

2、如果未启用swap分区功能,则新建一个专门的文件用于swap分区

#进入一个打算放置swapfile的目录(这里是放在 var 目录下)
cd /var/#创建大小为1024*1024的文件swapfile dd if=/dev/zero of=swapfile bs=1024 count=1048576 #设置成交换分区文件mkswap swapfile#启用此交换分区的交换功能
swapon swapfile 

注:block_size、number_of_block 大小可以自定义,比如 bs=1024 count=1024 代表设置 1G 大小 SWAP 分区 默认单位为 kb

通过mkswap命令将上面新建出的文件做成swap分区

通过swapon命令启用此交换分区的交换功能

注:如果在 /etc/rc.local 中有 swapoff -a 需要修改为 swapon -a

3、设置开机时自启用 SWAP 分区

修改文件 /etc/fstab 中的 SWAP 行,添加一行/var/swapfile swap swap defaults 0 0

# echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab

4、修改内核参数 /proc/sys/vm/swappiness 

当 swappiness为 0 时,表示最大限度的使用物理内存,物理内存使用完毕后,才会使用 SWAP 分区;

当 swappiness 为 100 时,表示积极地使用 SWAP 分区,并且把内存中的数据及时地置换到 SWAP 分区。

根据实际需要设置该值即可,如下述方法临时修改此参数,假设我们配置为空闲内存少于 30% 时才使用 SWAP 分区

# echo 30 >/proc/sys/vm/swappiness

若需要永久修改此配置,在系统重启之后也生效,可修改 /etc/sysctl.conf 文件,增加以下内容

# vim /etc/sysctl.conf

vm.swappiness=30

# sysctl -p

5、检查是否设置成功

[root@master ~]# free -mtotal        used        free      shared  buff/cache   available
Mem:          15363       13172         212         397        1978        1336
Swap:         32767         751       32016

6、关闭swap分区

当系统出现内存不足时,开启 SWAP 可能会因频繁换页操作,导致 IO 性能下降。如果要关闭 SWAP,可以采用如下方法

cd /var#关闭swapswapoff swapfile 注释掉 /etc/fstab文件中的如下## /var/swapfile swap swap defaults 0 0

7、修改 swap 大小

先按第6步,关闭 swap.  在做 第 2 步。 就可以了

  相关解决方案