阿里云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后,系统崩溃时将无法生成内存转储文件,生产环境不建议关闭。
- 本文标签: Linux Other
- 本文链接: https://blog.eyyyye.com/article/121
- 版权声明: 本文由爱做梦的比特原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
