阿里云 Linux 服务器内存消耗过高【已解决】

参考这篇更全:阿里云+宝塔面板内存爆满【已解决】

近经常发现阿里云服务器的内存跑满,还经常无法SHH链接,即使使用VNC也提示报错。发现MySQL导致内存占满,无法连接到服务器。数据库本身就是很吃内存的服务,建议对业务实际进行分析。 一般可以从以下几点分析: 检查数据库缓存设置;检查长时间连接和空闲连接;检查查询和事务的性能;检查索引设置。

Linux服务器的内存持续消耗过高,重启后可以恢复正常,但业务运行后问题依旧存在,而且没有明显高消耗内存进程存在。

阿里云VNC登录
内存爆满

如果不从数据库方向也可以解决这个问题呢?

就是扩充内存!

扩充内存有两种方式,一种就是在原有的服务器基础上增加内存,这个需要额外付费;另一种方式是增加虚拟内存SWAP。

Linux实例SWAP分区的配置

SWAP分区介绍

在Linux系统中的SWAP(交换分区),类似于Windows系统的虚拟内存。系统会把一部分硬盘空间虚拟成内存使用,将系统内非活动内存换页到SWAP,以提高系统可用内存。

注:如果您使用普通云盘,不建议使用SWAP分区。如果是高效云盘或SSD云盘,可以根据实际情况使用SWAP分区。详情请参考参文档ECS实例使用须知。 

SWAP配置介绍

1、以root用户身份,通过远程连接登录Linux实例,执行以下命令,创建用于交换分区的文件。

dd if=/dev/zero of=/mnt/swap bs=block_size count=number_of_block
#这个我们建议是采用官方的建议设置1G的虚拟内存就可以,bs=1M count=1024

注:block_sizenumber_of_block大小可以自定义,比如bs=1M count=1024代表设置1G大小SWAP分区。

2、执行以下命令,设置交换分区文件。

mkswap /mnt/swap

3、执行以下命令,启用交换分区文件。

swapon /mnt/swap

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

4、设置开机时自启用SWAP分区,需要修改文件/etc/fstab中的SWAP行,添加以下代码。

/mnt/swap swap swap defaults 0 0

注:/mnt/swap路径可以修改,可以根据创建的SWAP分区文件具体路径来配置。

5、执行以下命令,临时修改swappiness参数值,此处以空闲内存少于10%时才使用SWAP分区为例。

提示:在Linux系统中,可以通过查看/proc/sys/vm/swappiness内容的值来确定系统对SWAP分区的使用原则。当 swappiness内容的值为0时,表示大限度地使用物理内存,物理内存使用完毕后,才会使用SWAP分区。当swappiness内容的值为100时,表示积极地使用SWAP分区,并且把内存中的数据及时地置换到SWAP分区。查看修改前为0,需要在物理内存使用完毕后才会使用SWAP分区。

echo 10 >/proc/sys/vm/swappiness

6、若需要修改此配置,在系统重启之后也生效的话,通过vim命令编辑/etc/sysctl.conf文件,并增加以下内容。

vm.swappiness = 10
#备注下,根据我们的实际内存情况,给设置成了30!就是实际内存使用到70的时候就开始使用虚拟内存!

执行以下命令,验证添加成功。sysctl -p

关闭SWAP分区

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

  1. 执行以下命令,查询SWAP分区设置。free -m系统显示类似如下。
  2. 执行以下命令,关闭SWAP分区。swapoff [$SWAP_File]注:[$SWAP_File]SWAP分区标识。系统显示类似如下。
  3. 通过vim命令,修改/etc/fstab文件,删除或注释相关配置,取消SWAP的自动挂载,系统显示类似如下。
  4. 执行以下命令,确认SWAP分区已经关闭。free -m系统显示类似如下。
  5. 执行以下命令,临时修改swappiness参数值。此处以空闲内存为0%为例。echo 0 >/proc/sys/vm/swappiness   
  6. 若需要修改此配置,在系统重启之后也生效的话,通过vim命令编辑/etc/sysctl.conf文件,并增加以下内容。vm.swappiness = 0
  7. 执行以下命令,验证添加成功。sysctl -p

常见问题处理

常见问题描述

使用mkswap创建SWAP时出现类似如下报错信息:mkswap: error: swap area needs to be at least 40 KiB

问题原因

指定的SWAP分区文件太小,SWAP分区文件至少应该大于40KB。

解决方法

重新生成更大的文件格式化为SWAP即可。

参见原文:https://help.aliyun.com/zh/ecs/how-do-i-configure-a-swap-partition-on-a-linux-instance-and-resolve-frequently-asked-questions?spm=5176.smartservice_service_robot_chat_new.0.0.6d4ff625OdgeYd

滚动至顶部