首批通过分布式安全可靠测评,为关键业务系统打造
OBServer thread reach limit 线程超限排查思路
更新时间:2026-06-04 09:56
有关 OBServer thread reach limit 线程超限的说明
OceanBase 数据库 V3.x 版本 OBServer 线程受隐藏参数 _ob_max_thread_num 控制,默认 4096 ,低版本系统中,大量使用 PX 线程的场景可能存在线程回收不了情况,导致系统线程超限。
在 OceanBase 数据库 V3.x 版本中 OBServer 线程受隐藏参数 _ob_max_thread_num 控制,默认 4096 ,计算逻辑如下。
if (count >= get_max_thread_num() - OB_RESERVED_THREAD_NUM) {
ATOMIC_FAA(&total_thread_count_, -1);
ret = OB_SIZE_OVERFLOW;
LOG_ERROR("thread count reach limit", K(ret), "current count", count);
其中 OB_RESERVED_THREAD_NUM 128,也就是除去保留线程,默认最大创建线程数是 3968 。当出现该问题时候会打印 OB_SIZE_OVERFLOW 即 -4019 错误。
运维 OBServer thread reach limit 线程超限问题的方式
保留现场环境收集 obstack 堆栈信息。
通过 ob_admin 工具应急调整线程总数。
/ob_admin -h xxx -p 2882 set_server_config _ob_max_thread_num=8192
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
适用版本
OceanBase 数据库 V3.x 版本。