服务器报内存 CE 和 UE,该怎么处理

服务器管理界面弹出内存错误告警,第一件事是分清是 CE 还是 UE。这两个的紧急程度和处理方式差别很大。

CE:业务没受影响,但要记账

CE 是 Correctable Error,ECC 检出并纠正了错误,送给 CPU 的数据是正确的,业务无感。系统会记录一条日志。

单次 CE 不需要立即动作。要看的是趋势:

  • 偶发、地址分散:可能是软错误,记录观察;
  • 反复出现在同一物理地址:硬缺陷,安排处理;
  • 频率持续上升:颗粒在退化,尽快安排;
  • 集中在同一 DIMM 的多个地址:该条整体余量不足,建议更换。

把 CE 当成噪声全部屏蔽是常见做法,也是最容易踩坑的做法。UE 往往有几周甚至几个月的 CE 前兆期,屏蔽掉等于放弃预警。

UE:数据已经错了

UE 是 Uncorrectable Error,ECC 检出但纠不了。此时数据不可信,系统的反应取决于配置:可能触发机器检查异常直接宕机,可能杀掉相关进程,也可能标记页面不可用后继续运行。

UE 的处理没什么犹豫空间:定位到具体 DIMM,隔离或更换。在此之前不要把这台机器放回承载关键业务。

怎么定位到具体那一根

日志里的地址是物理地址,需要转成插槽位置。可用的途径:

  • BMC 或带外管理界面通常直接给出 DIMM 插槽编号,最省事;
  • Linux 下用 EDAC 相关工具或 mcelog 解析,能拿到通道和插槽信息;
  • 厂商自带的诊断工具一般也能定位;
  • 信息不全时用排除法:拔到最小可运行配置再逐根加回,费时但有效。

定位到位之后记录 DIMM 的序列号,这是后续追溯批次的依据。

修还是换

如果平台支持 PPR,且失效是孤立的行,可以尝试修复:

  • 先用 sPPR 临时顶住,观察是否还报错;
  • 维护窗口做 hPPR 永久修复;
  • 修完做一轮压测,最好带温度,确认不是别处还有问题。

什么情况下别修直接换:失效点分布成行列图案、同一条上多处失效、修复后短期内又报错、条子已经修过多次。这些都说明颗粒整体余量不足,修了也是拖时间。

几个容易忽略的非内存原因

报内存错不一定是内存坏。以下情况要一并检查:

  • 插槽接触。重新插拔并清洁金手指后复测,相当一部分问题这样就解决了;
  • 机箱温度过高。风扇故障、滤网堵塞、机柜热回流,都会把内存推到边界;
  • 混插。不同批次、不同 rank 数、不同厂商混在同一通道,边界条件下容易出错;
  • BIOS 版本。内存训练算法的问题会以内存报错的形式表现,升级后消失;
  • 供电。电源老化导致纹波超标,先坏的往往是内存。

把这几项排除掉再判条子坏,能减少不少无效更换。