---
title: OBServer 相关的操作不能在内部表生效并且 RS 异步队列满-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于OBServer 相关的操作不能在内部表生效并且 RS 异步队列满相关的常见问题和使用技巧，帮助您快速解决OBServer 相关的操作不能在内部表生效并且 RS 异步队列满的难题。
---
切换语言

- 简体中文
- English

划线反馈

# OBServer 相关的操作不能在内部表生效并且 RS 异步队列满

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

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

## 问题现象

- 所有的 OBServer 操作不能在内部表生效，例如 `delete server` 不能删除内部表，新加的机器无法在 `__all_server` 表里看到，或者不能设置 `start_service_time` 大于 0。
 - RS 的异步队列积压，可以看到提交异步队列的任务都报错 4019。
 - 存在下线很长的机器报错 4121。

## 问题原因

OBServer 会每隔 2s 会发送一次心跳给 RS，RS 如果 10s 都没有收到该 OBServer 的心跳，就会认为该 OBServer 下线了。OBServer 给 RS 发送心跳需要知道 RS 的位置，为了防止 OBServer 不知道 RS 的位置从而导致发送心跳失败，RS 会在检查到有 OBServer 下线的时候，提交一个异步任务，任务中会推送 `rs_list` 给到该 OBServer。

如果该 OBServer 和 RS 之间存在网络隔离，那这个 RPC 必然是会失败的，并且 `dead_socket_detection_timeout` 设置多少，这个 RPC 就会持续多久。

已知 RS 每隔 3s 就会检查有没有 OBServer 下线，如果存在下线的 OBServer 就会提交一个异步任务，并且不会判定异步任务是否存在。如果每个异步任务都因为 `dead_socket_detection_timeout` 设置的比较大而耗时很久的话，长时间积累下来，异步队列就会打满，从而导致异步队列积压。

所有 OBServer 相关的操作和变更，例如 add server，stop server 等都是先修改内存，然后提交一个异步任务，在异步任务中更新内部表。如果异步队列积压的情况，OBServer 所有的操作都不会在内部表中被看到。

## 问题的风险及影响

- 所有的 OBServer 操作可以在内存中记录，但是内部表中看不到，例如 OBServer 启动后，可能 OBServer 已经`start_service` 了，但是 `start_service_time` 汇报不到内部表中，那这个 OBServer 就会被 OCP 或者 proxy 认为没启动成功。
 - 异步队列积压，RS 这边很多任务都是借助异步队列执行的，不确定有什么未知的风险。

## 影响版本

OceanBase 数据库企业版 V2.2.77 BP17 Hotfix1（oceanbase-2.2.77-117010012023061611）、V3.1.2 BP12、V3.2.3 BP11、V3.2.4 BP4（oceanbase-3.2.4.4-104000052023062021） 之前的所有版本。 OceanBase 数据库社区版 V3.1.5_CE（oceanbase-ce-3.1.5-100000252023041721） 之前的所有版本。

## 解决方法及规避方式

### 解决方法

- 升级到问题已修复版本：

     - 目前已修复的版本包含 OceanBase 数据库企业版 V2.2.77 BP17 Hotfix1（oceanbase-2.2.77-117010012023061611）、V3.2.4 BP4（oceanbase-3.2.4.4-104000052023062021） 及之后版本。
     - 目前已修复的版本包含 OceanBase 数据库社区版 V3.1.5_CE（oceanbase-ce-3.1.5-100000252023041721）及之后版本。
 - 按照以下方法处理

     1. 调小 `dead_socket_detection_timeout` 的值。
     2. 然后切换 RS 或者重启 RS。（如果不可以操作 RS，只能采用非常规手段，使用 debug_sync 让 offlineTask 暂时不生成。请联系 OceanBase 技术支持处理。）

### 规避方式

- 如果存在宕机的 OBServer，需尽快让 server 下线。
 - `dead_socket_detection_timeout` 配置项要尽可能的设置小一点，让 RPC 可以尽快失败掉。

Previous

[OceanBase 数据库执行 delete server 等操作时报错 not enough member or quorum mismatch](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000226175)

Next

[无法正常挂载目录 /data/1](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000450154) ![有帮助](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) 咨询热线
