原创

阿里云ESC服务器标2G内存实际只有1.7G问题排查处理

最近购买了一台阿里云2核2G的ESC服务器,安装Anolis OS系统做测试使用。

本来计划2G内存刚刚够用,但是实际登录到服务器常查看,才发现服务器实际的内存容量只有1.6G左右。以为是系统版本的原因,所以更换了Centos7.9系统镜像,但是通过htop命令查询实际内存还是只有1.72G左右。

询问阿里云AI助理该问题,它回答2G内存的服务器实际可用容量1.6G是正常现象。

根据我们之前使用腾讯云服务器的经验,2G内存服务器实际内存可用容量是1.95G左右的。我们继续询问阿里云AI助理,是否能将这部分内存释放出来使用,回复如下:

因为我们有一台腾讯云的测试服务器,现在根据阿里云AI智能助理的回复,对比两台服务器的配置差异,我们来将这部分内存释放出来。

一、分析内存情况

1.检查内存占用情况

首先通过常用命令free -h查看服务器系统内存状态:

通过htop命令查看服务器系统内存状态:

通过dmidecode -t memory命令查看服务器硬件内存分配状态:

通过上面硬件内存分配数据与系统实际可用内存对比,我们发现硬件层的分配腾讯云和阿里云都分配了2G内存,但是到系统层阿里云就只剩下1.7G了。根据阿里云AI助理的回复,在阿里云ECS服务器上,Linux系统通过crashkernel参数预留了一部分内存(例如192MB或256MB),用于内核崩溃时生成转储文件(Kdump功能),接下来我们根据提示查看一下该功能状态与内存占用。

2.检查kdump占用

首先通过systemctl status kdump查看服务运行状态:

然后通过kdumpctl showmem命令查看kdump预留的内存大小:

通过对比发现阿里云的kdump预留内存为161MB,接下来根据阿里云AI助理给出的操作步骤,把这部分内存释放出来。

二、释放内存占用

1.关闭kdump服务

systemctl stop kdump
systemctl disable kdump

2.修改GRUB配置

我们需要将/etc/default/grub文件中的crashkernel参数移除:

修改后:

3.更新GRUB配置并重启

grub2-mkconfig -o /boot/grub2/grub.cfg

4.重启服务器

reboot

三、验证释放状态

1.检查kdump内存预留状态

2.检查内核实际预留内存

cat /sys/kernel/kexec_crash_size

可用看到内核实际预留内存大小已经为0了。

3.使用free -m查看内存状态

4.查看内存总量

cat /proc/meminfo | grep MemTotal

到这里我们看到阿里云的内存总量和腾讯云的内存总量还是差100MB左右,但是询问阿里云AI助理,已经没有其他地方能释放内存了,可能差值这部分就是阿里云和腾讯云内存分配策略不同吧,所以问题处理就到这里了。

调整后内存大小对比:



扩展说明:

1.关闭kdump后,系统崩溃时将无法生成内存转储文件,生产环境不建议关闭。

正文到此结束
本文目录