首批通过分布式安全可靠测评,为关键业务系统打造
业务集群分区数过多导致 ocp_monagent 进程频繁重启
更新时间:2025-06-23 07:56
问题现象
ocp_monagent 进程频繁 OOM 重启。
内存分析如下:

由图片信息可得:github.com/oceanbase/obagent/monitor/plugins/inputs/mysql.(*TableInput).collectData 和 github.com/oceanbase/obagent/monitor/plugins/inputs/mysql.(*TableInput).doCollect 内存占比最高。
查看 ocp_monagent 进程的常驻内存监控图表:

可能原因
原因是业务集群的分区数太多,RS 节点上的 OCP-Agent 会采集所有分区的磁盘数据,采集的数据会占用 OCP-Agent 内存的一部分,一般在 2GiB 的内存限制下,OCP-Agent 大概可以承受几十万分区的采集量。
您可参考如下命令查看集群的分区数量:
select count(*) from CDB_OB_TABLE_LOCATIONS;
影响版本
OCP 所有版本。
解决方法及规避方式
方式一:若无需关注租户及以下维度的磁盘数据,可关闭分区的磁盘数据采集。
当 OCP 为 V4.3.2 以下版本时,执行如下命令进行关闭。
/home/admin/ocp_agent/bin/ocp_agentctl config -u monagent.pipeline.tenant.disk.collect.disabled=true当 OCP 为 V4.3.2 及以上版本时,在 集群 > 运维配置 中修改
monagent.pipeline.tenant.disk.collect.disabled的参数值为true,详情可参考 管理参数
方式二:若节点内存较为充裕,可调大 ocp_monagent 进程的内存。若调大内存后效果仍不明显,可定期重启 OCP-Agent。