OceanBase 集群出现 OOM,如何定位内存占用来源?
3 个赞
先看报错日志,然后再看看LSMTree的工作机制各个故障点
学习一下
OceanBase 的内存管理机制如下:
- OceanBase 数据库启动时会加载几 GB 的内存,并且随着运行逐渐按需申请更多内存直到达到
memory_limit设置的上限。 - 一旦 OceanBase Server 节点从操作系统申请了内存,通常不会释放回操作系统,而是会维护在自己的内存管理使用列表和 Free List 中。
- OceanBase 数据库会占据服务器的大部分内存并进行统一管理。对于新的业务需求,通过创建新租户来划分内存资源。
- 当租户内部内存不足以满足需求时,可以在线扩展集群,增加可分配的 CPU 和内存资源。
- 如果遇到 OOM 问题,可以通过以下方式进行排查:
- 使用
obdiag check命令对 OceanBase 集群进行巡检,帮助发现可能导致集群 OOM 的异常原因。 - 通过视图如
GV$OB_MEMORY来查看 OBServer 节点内存标签的统计信息。 - 通过视图如
GV$OB_MEMSTORE来查看 MemStore 的统计信息。 - 通过视图如
GV$OB_KVCACHE来查看 Kvcache 的统计信息。
- 使用
- 如果需要进一步查看内存使用情况,还可以查看内存相关的日志。
具体信息可参考以下文档:
2 个赞
喵的
你来回答一下
学到了
先收藏先
学习一下