---
title: 500 租户内存出现 OB_COMMON_ARRAY 模块泄露时，如何定位导致泄露的申请堆栈-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 500 租户内存出现 OB_COMMON_ARRAY 模块泄露时，如何定位导致泄露的申请堆栈相关的常见问题和使用技巧，帮助您快速解决 500 租户内存出现 OB_COMMON_ARRAY 模块泄露时，如何定位导致泄露的申请堆栈的难题。
---
切换语言

- 简体中文
- English

划线反馈

# 500 租户内存出现 OB_COMMON_ARRAY 模块泄露时，如何定位导致泄露的申请堆栈

更新时间：2025-05-07 12:01

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

## 适用版本

OceanBase 数据库 V2.x、V3.x、V4.x 版本

## 操作步骤

1. 登录 SYS 租户，执行如下命令打开 mem_leak 监控。

      - OceanBase 数据库 V2.x、V3.x 版本，可通过如下命令打开 mem_leak 监控。

       ```shell
       obclient> alter system set leak_mod_to_check='OB_COMMON_ARRAY';

       ```
      - OceanBase 数据库 4.0 及以上版本支持跟踪指定租户的指定模块内存，具体命令如下。

       ```shell
       obclient> alter system set leak_mod_to_check='OB_COMMON_ARRAY@tenant_id';

       ```
 2. 等待内存模块增长一段时间后，执行如下 SQL 查看泄露堆栈。

   ```shell
   obclient>SELECT * FROM oceanbase.__all_virtual_mem_leak_checker_info ORDER BY alloc_count DESC;

   ```
 3. 找到 `alloc_count` 最多的堆栈，通过 `addr2line` 获取函数名。

   ```shell
   addr2line -pCfe /home/admin/oceanbase/bin/observer xxxxx

   ```

   返回结果如下。

   ```shell
   $oceanbase_root/src/lib/utility/utility.cpp:58
   $oceanbase_root/src/lib/../../src/lib/allocator/ob_mem_leak_checker.h:125
   $oceanbase_root/src/lib/allocator/ob_tc_malloc.cpp:399
   $oceanbase_root/src/lib/allocator/ob_tc_malloc.cpp:218
   $oceanbase_root/src/observer/../../src/lib/allocator/ob_malloc.h:38
   $oceanbase_root/src/lib/allocator/ob_malloc.cpp:121
   $oceanbase_root/src/lib/../../src/lib/allocator/ob_malloc.h:116
   $oceanbase_root/src/sql/../../src/lib/container/ob_array.h:295
   $oceanbase_root/src/sql/../../src/lib/container/ob_array.h:291
   $oceanbase_root/src/sql/../../src/lib/container/ob_array.h:468
   $oceanbase_root/src/sql/optimizer/ob_log_table_scan.cpp:85
   $oceanbase_root/src/sql/optimizer/ob_log_plan.cpp:1183
   $oceanbase_root/src/sql/optimizer/ob_log_plan.cpp:1484
   $oceanbase_root/src/sql/optimizer/ob_log_plan.cpp:1557
   $oceanbase_root/src/sql/optimizer/ob_log_plan.cpp:2092
   $oceanbase_root/src/sql/optimizer/ob_select_log_plan.cpp:467
   $oceanbase_root/src/sql/optimizer/ob_select_log_plan.cpp:455
   $oceanbase_root/src/sql/optimizer/ob_select_log_plan.cpp:890
   $oceanbase_root/src/sql/optimizer/ob_select_log_plan.cpp:378
   $oceanbase_root/src/sql/optimizer/ob_select_log_plan.cpp:450
   $oceanbase_root/src/sql/optimizer/ob_select_log_plan.cpp:568
   $oceanbase_root/src/sql/optimizer/ob_optimizer.cpp:23
   $oceanbase_root/src/sql/ob_sql.cpp:1160
   $oceanbase_root/src/sql/ob_sql.cpp:887
   $oceanbase_root/src/sql/ob_sql.cpp:152
   $oceanbase_root/src/observer/mysql/obmp_query.cpp:263

   ```
 4. 联系技术支持人员协助排查。
 5. 关闭 mem_leak。

   打开 checker 后执行性能会显著下降，问题定位后及时将 checker 关闭。

   ```shell
   obclient> alter system set leak_mod_to_check='';

   ```

Previous

[500 租户下 TenantSchemMgr 内存占用较高的原因](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000340638)

Next

[CTE temp table 数据量超过 90W 时发生 500 租户 ObSEArray 内存泄漏问题](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003098734) ![有帮助](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) 咨询热线
