基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
OBServer 机器 cache 可用内存不足造成磁盘 I/O 高
更新时间:2026-08-21 09:36
问题现象
OBServer 所在机器的 I/O 负载突然增大,导致磁盘出现 hang 现象。具体表现如下:
- 从
observer.log日志和数据库级别的监控上看,I/O 量很低。 - 从主机维度和进程维度查看,IOPS 极高,且主要是读 I/O 飙高,写 I/O 占用不大。
- 该现象不仅影响
observer进程,系统内大量其他进程的读磁盘操作也同时飙高。 - 问题发生时,机器的内存利用率出现上涨,同时
kswap进程的 CPU 使用率明显升高,表明系统正在进行 cache 内存回收。
问题原因
该问题属于运维环境内存严重不足导致的系统级行为。
当机器的大部分内存都被使用,且剩余可用内存水位长时间处于 [vm.min_free_kbytes, vm.min_free_kbytes * 1.5] 区间时,系统虽然还不会触发 OOM Kill,但会频繁触发操作系统的 cache 内存回收。
进程运行所依赖的程序代码段和基础库文件通常存放在 cache 内存中。当 cache 内存被系统回收释放后,全系统所有进程在执行下一行指令时,会因为在内存中找不到对应的代码而触发缺页中断,被迫从磁盘重新读取代码。这导致了大量的磁盘读 I/O。
机器可用内存越接近于 min_free_kbytes,可用的 cache 内存越少,带来的 I/O 压力就会越大。
关键信息
- 监控指标:数据库层面 I/O 监控低,但操作系统层面
observer及其他进程的读 I/O 极高;kswap进程 CPU 使用率飙升。 - 内存水位:系统剩余可用内存接近
/proc/sys/vm/min_free_kbytes的设定值。 - 操作系统参数:排查
/proc/sys/vm/min_free_kbytes和/proc/sys/vm/overcommit_memory的配置。
问题的风险及影响
磁盘 I/O 被打满,机器负载飙高,导致磁盘 hang,严重影响 OBServer 及该机器上其他所有进程的正常运行。
影响租户
该机器上的所有租户。
适用版本
所有版本。
解决方法
现场应急处理:手动终止一些内存占用高的非核心进程,快速释放系统内存,停止系统的 cache 频繁回收行为,从而缓解 I/O 压力。
规避方式
进行机器内存扩容,合理规划系统及各组件的内存分配,避免操作系统出现内存不足的情况。