---
title: OCP 元数据库内存占用过大-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 OCP 元数据库内存占用过大相关的常见问题和使用技巧，帮助您快速解决 OCP 元数据库内存占用过大的难题。
---
切换语言

- 简体中文
- English

划线反馈

# OCP 元数据库内存占用过大

更新时间：2025-09-24 08:46

适用版本： V2.1.x、V2.2.x、V3.1.x、V4.0.x、V4.1.x、V4.2.x 内容类型：How-to  

## 问题现象

在新部署的一套 OCP 的元数据库中，发现内存使用很高，机器总内存使用率超过了 90%。

使用 `top` 查看进程内存情况如下：

![1](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/memory/8000.ocp-meta-database-memory-usage-is-too-high/1.png)

从上图可以看到，机器总内存 64G， observer 进程内存使用占到了 72.1%，observer 进程内存占用了 46G。

## 问题原因

1. 查看 observer 内存分配情况:

   ![2](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/memory/8000.ocp-meta-database-memory-usage-is-too-high/2.png)

   通过查询分析，observer 实际分配的内存上限为 48G，目前使用 46G，属于正常情况，但是数据库属于空跑状态，内存不应该这么高，因此继续排查，查看内存被占用情况。
 2. 查看租户的 memstore 使用情况，发现使用率并不高，怀疑内存可能被预占了。

   ```sql
   select now(),t.tenant_name, m.svr_ip,
   m.active_memstore_used / 1073741824 active_G,
   m.total_memstore_used / 1073741824 total_G,
   m.major_freeze_trigger / 1073741824 trigger_G,
   m.memstore_limit / 1073741824 limit_G,
   (m.total_memstore_used / m.memstore_limit) * 100 used_rate
   from __all_virtual_tenant_memstore_info m,
   __all_tenant t
   where t.tenant_id = m.tenant_id
   having used_rate > 1 order by used_rate desc;

   ```

   ![3](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/memory/8000.ocp-meta-database-memory-usage-is-too-high/3.png)
 3. 查看参数 `memory_chunk_cache_size` 的值为 0，说明是自适应管理，不会轻易清理缓。

   ![4](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/memory/8000.ocp-meta-database-memory-usage-is-too-high/4.png)
 4. 查看 observer 的日志 `grep CHUNK_MGR observer.log`。

   ![5](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/memory/8000.ocp-meta-database-memory-usage-is-too-high/5.png)

   可以看到内存被缓存了有 33G，因此判断内存是被 observer 占用了，不过先缓存了起来。

## 适用版本

OceanBase 数据库社区版所有版本。

## 解决方法

调整参数 `memory_chunk_cache_size` 的值，将其调整为 10G，cache 超过 10G 就会触发清理，不占用过多操作系统内存。

```shell
obclient> alter system set memory_chunk_cache_size="10G";

```

Previous

[专有云生产环境从 OceanBase 数据库 V3.2.3 BP5 升级至 V3.2.3 BP10 后 SqlSortRow 占据内存上涨，临时文件磁盘使用变高](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003564246)

Next

[allocate jit memory failed 的 ERROR 报错诊断](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003273051) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
