记录一下那天晚上的排查过程。控制台标注实例内存四 G,系统里查到的总量只有三点七 G,应用按四 G 规划的内存直接超了规划。

这类报错背后常见的原因有几处,逐个排除就行。部分内存被内核和硬件保留。另一种情况是虚拟化设备预留了内存区域。

不容易想到的是,系统本身运行也需要额外开销。

上来先看内核识别的总内存

grep MemTotal /proc/meminfo

接着看被保留的内存区域

dmesg | grep -i reserved

然后确认实例规格与计费口径

lscpu | grep -i 'model name'

剩下的就是按可用内存重新规划

free -m

当时还开着另一个排查窗口,两边日志对照着看才定位到。

别只看报错消失,验证要多做一步。服务内存规划总和低于可用内存的八成,运行不再出现紧张和频繁回收。

提醒一点。云厂商标注的是规格内存,系统可用量总会少一些;按九成估算更稳,别卡着上限配服务。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189