基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
创建集群时 bootstrap 报错:thread count reach limit
更新时间:2026-05-07 06:36
适用版本
- OceanBase 数据库 V2.x、V3.x 版本。
- OBServer 服务器 CPU 核数较多的场景(比如常见的海光 256C 服务器)。
问题现象
通过 OCP 在机器 CPU 核数较多的 OBServer 服务器上(比如常见的海光 256C 服务器)安装 OceanBase 数据库 V2.x、V3.x 版本时,在 Bootstrap ob 这一步会遇到如下的报错:

observer.log 中相关报错如下:
[2024-02-22 16:39:37.475419] ERROR issue_dba_error (ob_log.cpp:2328) [221784][0][Y0-0000000000000000-0-0] [lt=4] [dc=0][errcode=-4388] Unexpected internal error happen, please checkout the internal errcode(errcode=-4019, file="thread.cpp", line_no=99, info="thread count reach limit")
[2024-02-22 16:39:37.475429] INFO ob_page_manager.cpp:57 [225771][0][Y0-0000000000000000-0-0] [lt=0] [dc=0] REACH SYSLOG RATE LIMIT
[2024-02-22 16:39:37.475430] EDIAG [LIB] thread.cpp:99 [221784][0][Y0-0000000000000000-0-0] [lt=9] [dc=0][errcode=-4019] thread count reach limit(ret=-4019, current count=3968) BACKTRACE:0x1132b720 0x11312824 0x5f5c9eb 0x5f5c538 0x5f5c2b4 0x5f81c74 0x10ca9724 0x10ca92fb 0x10ca8716 0x10ca8f34 0x11d2a5f1 0x11d29df7 0xcef3905 0x5f59da0 0x7f43d97956a3 0x5f58876
[2024-02-22 16:39:37.475506] INFO [COMMON] ob_io_struct.cpp:2834 [225771][0][Y0-0000000000000000-0-0] [lt=63] [dc=0] io callback thread started(thread_idx=7)
问题原因
OBServer 数据库服务进程是一个单进程多线程的架构,在 OceanBase 数据库 V2.x、V3.x 版本中正常一个 OBServer 空载进程至少都会启动 1200 个以上的子线程。其中一些功能模块的线程数量跟 OBServer 服务器的机器 CPU 核数强相关,比如 OceanBase 数据库 V2.x、V3.x 版本中默认的网络线程 MysqlIO/RpcIO 的数量 = max(6, 机器 CPU_NUM/8)。而单个租户的活跃工作线程数则等于分配给该租户的 min_cpu * cpu_quota_concurrency,因此,创建的业务租户越多,产生的工作线程数也越多。
目前在 OceanBase 数据库 V2.x、V3.x 版本中,一个 OBServer 进程默认可以产生的线程数上限受下面的隐藏配置项控制:
obclient > select * from __all_virtual_sys_parameter_stat where name='_ob_max_thread_num';
该配置项为 CLUSTER 级别,默认值为 4096,取值范围为 [4096, 10000),动态生效。
因此,如果当前 OBServer 进程的线程总数已经达到了默认的上限值,则 OBServer 内核不会允许继续产生新的线程,相关的日志中也会产生对应的线程数超限的报错!
在以下场景下,一个 OBServer 进程所有的线程数可能会超过原 4096 上限而报错:
业务开启了大量 PX 并行执行的场景。
机器 CPU 核数较多时(如海光 256c)。
解决方法
在创建 OceanBase 集群时,手工调整内部隐藏配置项
_ob_max_thread_num的取值,将该参数值从默认的 4196 调整为更大的数值,比如 8192:
在 OceanBase 集群创建成功后,登录 sys 租户,调整
_ob_max_thread_num的值。obclient> alter system set _ob_max_thread_num=8192; Query OK, 0 rows affected (0.05 sec)