---
title: 如何在线生成 OBServer 的堆栈信息-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于如何在线生成 OBServer 的堆栈信息相关的常见问题和使用技巧，帮助您快速解决如何在线生成 OBServer 的堆栈信息的难题。
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# 如何在线生成 OBServer 的堆栈信息

更新时间：2026-06-08 02:41

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

在诊断 OBServer 节点出现整体性能慢、OBServer hang 住，OBServer CPU 使用率持续性高或者突然飙高的问题时，需要直接分析 OBServer 节点的线程栈信息，对 observer 内核的进行进一步研究。为了可以安全快速地获取到 OBServer 节点的线程栈，OBServer 实现了通过 obstack（需要独立安装），或者是 `kill -60 $observer` 命令的方式以一种轻量级的方式来获取 OBServer 节点的线程栈信息的方案。

在 OBServer 中，实现了通过自定义信号量（60）以一种轻量级的方式来获取 OBServer 节点的线程栈信息。目前有两种方法轻量级的在线获取 OBServer 节点的线程堆栈信息。

## obstack 工具

obstack 工具(内部也是调用的 `kill -60 $observer` 命令)。obstack 的优点是可以直接将线程栈的地址信息解析成函数名，并且进行简单的聚集，当需要迅速的找到 OBServer 节点所有线程的线程栈代码执行热点时，这就非常方便。 ​ 使用方法:

obstack 工具需要进行单独安装，在询问 OceanBase 数据库支持团队获得 obstack 的 rpm 包后可以直接对 obstack 进行安装。 在成功安装 obstack 工具后，在执行下面的命令捕获 OBServer 节点的线程栈，将线程栈重定向到任意文件中，例如：`obstack.trc`文件。

```shell
obstack -p ${pid of observer} > obstack.trc

```

为了能够迅速定位 observer 的热点线程栈，还可以利用 obstack 的快速聚集选项 `-a` 来捕获热点线程栈。

```shell
obstack -p ${pid of observer} -ao > obstack.trc

```

更多 obstack 选项请参考 `obstack --help`。

请将 obstack 输出的线程栈信息和问题复现时的 observer 日志一起打包给 OceanBase 数据库支持团队进行根因分析。

## kill -60 $observer 命令

该方式生成的线程栈文件并不直接可读，需要对函数名进行进一步解析。 ​ 使用方法:

1. 获取到 observer 进程的 pid。

   ```shell
   [admin@lab324-ob32 oceanbase]$ ps -ef |grep observer  
   admin     46331      1 99 Jun29 ?        75-03:26:17 /home/admin/oceanbase/bin/observer
   admin     87997  33666  0 15:07 pts/0    00:00:00 grep --color=auto observer

   ```
 2. 执行 `kill -60`。

   ```shell
   [admin@lab324-ob32 oceanbase]$ kill -60 46331

   ```

   这一步会在 observer log 上一级目录产生一个线程栈文件（文件以 stack 开头），标准安装部署会生成在 `/home/admin/oceanbase` 目录下。
 3. 查看 stack 文件是否存在。

   ```shell
   [admin@lab324-ob32 oceanbase]$ ls -lrt /home/admin/oceanbase/stack*
   -rw------- 1 admin admin 181279 Jul 24 14:55 /home/admin/oceanbase/stack.46331.202372465515

   ```

请将线程栈文件，复现时的 observer 日志以及 OBServer 节点的准确版本（可通过 `observer -V` 命令）打包给 OceanBase 数据库支持团队进行根因分析。

## 适用版本

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

Previous

[SYS 租户队列积压，集群异常](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000208045)

Next

[如何抓取 pstack](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000207650) ![有帮助](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) 咨询热线
