基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
500 租户内存暴增造成内存不足
更新时间:2026-08-17 07:56
问题现象
observer 节点运行过程中,日志突然出现内存报错:
alloc failed reason is that server memory has reached the upper limit,server_hold : 657599823872 (~612 GB),server_limit: 657601593344 (~612 GB),alloc_size : 2097152 (2 MB)
从日志可以看出,当前节点使用内存已达到上限,observer 请求系统内存失败。
通过 OCP 查看,发现集群其中一个节点的 500 租户内存使用增长到了 500 GB。
初步判定 500 租户内存暴增是内存分配失败的主要原因。关闭对应应用并重启对应 observer 节点后,500 租户内存下降至正常范围,节点恢复正常。
问题原因
对问题时间段的业务情况进行分析,发现其中一个租户当日上线了一个资讯类新业务。故障期间,该业务导入了一批新的业务数据,相关业务场景数据为公开的资讯类数据,导入的数据包含大字段信息。
经过对日志进行分析,发现问题根因在于 NewScanner 模块分配了 500 GB 内存。该模块内存被调用了 8718 次,每次调用占用内存约为 60 MB。
关键信息
当 SQL 处理的行长超过 60 MB 时,通过 SHOW PROCESSLIST 查看会话情况,NewScanner 模块会出现内存泄露,每次内存泄露值约为 60 MB。
本次应用场景下,SQL 文本超过了 60 MB。SQL 执行期间,OCP 会不断通过 SHOW PROCESSLIST 收集会话信息,造成了 NewScanner 模块内存迅速增长,从而引发本次故障。
问题的风险及影响
500 租户内存暴增,导致系统内存分配失败,相关业务场景出现异常报错。
适用版本
OceanBase 数据库 V4.2.5.6(oceanbase-4.2.5.6-106000052025082216)及以后版本
解决方法
升级至 4.2.5 BP6 hotfix1 及后续版本。
规避方式
无。