---
title: 创建租户和更新配置项形成死锁-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于创建租户和更新配置项形成死锁相关的常见问题和使用技巧，帮助您快速解决创建租户和更新配置项形成死锁的难题。
---
切换语言

- 简体中文
- English

划线反馈

# 创建租户和更新配置项形成死锁

更新时间：2026-06-10 01:56

适用版本： V3.2.x 内容类型：Troubleshoot  

## 问题现象

创建租户时，出现sys租户队列积压，创建租户任务超时。

## 关键诊断信息

### 触发条件

创建租户时，遇到正在有配置项更新（可能是外部触发的租户配置项更新、集群配置项更新；也可能是加机器、RS 切主时分别触发的 `server_list` 和 `rootservice_list` 更新）。有概率导致创建租户任务超时失败。

### 事前巡检

检查触发场景，是否近期做过 租户创建、修改配置项、加机器、RS 切主这些操作中的两个或以上。

### 事后诊断

1. 检查系统租户队列积压，且无法恢复。

   ![image01](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/cluster-management/20250103creating-tenants-deadlock001.png)

   如图，系统租户队列 `total_size` 上涨的速度等于累计收到 RPC 请求 `recv_np_rpc_cnt` 增长的速度，说明 RPC 来一个排队一个，没有在消化，反映线程大概率死锁。
 2. 抓取obstack，分析堆栈，看是否有以下三个堆栈。

   抓取命令，如下。

   ```shell
   obstack -ao pid > obstack.log

   ```

   pid 替换为 OBServer 的 pid。

   尝试找这三个堆栈。

   **线程 1：** `ConfigMgr` 线程卡在 `dump2file` 里面的 `wrlock`。

   ![image02](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/cluster-management/20250103creating-tenants-deadlock002.png)

   **线程 2：** 某个 `TNT_L0_1` 线程卡在 `ObTenantConfig::got_version` 里面的 `Mutex::lock()`。

   ![image03](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/cluster-management/20250103creating-tenants-deadlock003.png)

   **线程 3：** 另一个 `TNT_L0_1` 线程卡在 `ObTenantNodeBalancer` 里面，最上层显示卡在 `wrlock`。

   ![image04](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/cluster-management/20250103creating-tenants-deadlock004.png)

## 问题原因

**上面所示的三个线程：** **线程 1：** `ConfigMgr`，**线程 2：** `TNT_L0_1`， **线程 3：** `TNT_L0_1`。

**涉及三把锁：** **A：** `config_map_lock`，**B：** `serialize_lock`，**C：** `config_update_task_lock`。

**形成死锁的条件：**

线程 1 持有 锁 C，获取写锁 A 卡住。

线程 2 持有读锁 A，获取写锁 B 卡住。

线程 3 持有读锁 B，获取锁 C 卡住。

详见堆栈。

## 问题的风险及影响

上述所说的线程 2，正在执行创建租户动作中的一步 `add_tenant_config`，因此会阻塞创建租户的过程，导致建租户超时失败。

## 影响租户

影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。

## 影响版本

OceanBase 数据库企业版本 V3.2.3 BP6（oceanbase-3.2.3.3-106000102022111521）及之后版本。

## 解决方法及规避方式

- 解决方法：

  重启队列积压的 OBServer。
 - 规避方式：

  事前规避，尽量避免创建租户和修改配置项的动作同时发生。

Previous

[开启 _optimizer_better_inlist_costing 会引发随机 core 等异常](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002762862)

Next

[通过 SQL 语句调整 OceanBase 数据库 V3.x 版本租户资源规格](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000001687222) ![有帮助](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) 咨询热线
