---
title: 如何通过 BCC Memleak 捕获溢出内存申请 -OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于如何通过 BCC Memleak 捕获溢出内存申请 相关的常见问题和使用技巧，帮助您快速解决如何通过 BCC Memleak 捕获溢出内存申请 的难题。
---
切换语言

- 简体中文
- English

划线反馈

# 如何通过 BCC Memleak 捕获溢出内存申请

更新时间：2026-05-09 01:51

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

observer 进程内存占用超出系统配置项 `memory_limit` 或 `memory_limit_percentage` 分配的额度后，会产生内存溢出的风险。本文介绍如何通过 BCC Memleak 捕获溢出内存申请。

## 适用版本

OceanBase 数据库所有版本

## 适用场景

observer 进程内存占用超出系统配置项 `memory_limit` 或 `memory_limit_percentage` 分配的额度后，产生内存溢出的风险，并且线上系统实施 Strace 及 Systemtap 存在 observer 进程吐核或集群挂起的风险。

## 前提条件

操作系统内核版本为 Linux 4.16 及以上版本。

## 通过 BCC Memleak 捕获溢出内存申请

1. 在发生内存溢出的 OBServer 上安装 BCC Memleak 工具。

   ```unknow
   [root@hostname /]# yum install -y ./python3-netaddr-0.7.19-11.h3.eulerosv2r8.noarch.rpm ./bcc-0.7.0-1.eulerosv2r8.aarch64.rpm ./bcc-tools-0.7.0-1.eulerosv2r8.aarch64.rpm ./clang-7.0.0-2.h1.eulerosv2r8.aarch64.rpm ./clang-libs-7.0.0-2.h1.eulerosv2r8.aarch64.rpm ./compiler-rt-7.0.0-1.eulerosv2r8.aarch64.rpm ./libomp-7.0.0-1.eulerosv2r8.aarch64.rpm ./python3-bcc-0.7.0-1.eulerosv2r8.aarch64.rpm ./kernel-devel-4.19.36-vhulk1905.1.0.h276.eulerosv2r8.aarch64

   ```
 2. 对 observer 进程进行采样，捕获溢出的内存申请。

   其中 `$pid` 表示 observer 进程的 PID，`$interval` 表示捕获的时间间隔。

   ```unknow
   [root@hostname /]# nohup /usr/share/bcc/tools/memleak -a -p $pid $interval > memleak_248196_5s.out 2>&1 &

   ```

Previous

[如何抓取 memleak ？](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000209948)

Next

[OceanBase 数据库如何抓取内存碎片](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000209940) ![有帮助](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) 咨询热线
