下表列举出 OBServer 的一部分后台线程及其功能描述。大部分场景下用户无需关注其实现细节。
说明
在 OBServer 版本迭代中会对后台线程持续优化,因此有些后台线程会在版本升级的过程出现消失、合并等情况,也有可能会出现新的后台线程。
| 线程名 | 归属模块 | 线程数量 | 功能描述 |
|---|---|---|---|
| TsMgr | Trx | 1 | 用于本地 gts cache 的刷新。 |
| WeakReadSvr | Trx | 1 | 用于计算本地 server 级别备机读时间戳。 |
| HAGtsSource | Trx | 1 | 用于 ha_gts 的刷新。 刷新频率由配置项 gts_refresh_interval 控制。 |
| TransCheckpoint Worker | Trx | 1 | 用户事务的 checkpoint 操作。 |
| GCPartAdpt | Trx | 1 | 定期检查 all_tenant_gc_partition_info 表,获取分区的 gc 情况,用于 GC 和事务 2PC 的推进。 |
| PartWorker | Trx | 1 | 遍历本机所有的 partition,做以下操作: 1. 每隔 50ms 尝试写事务层 checkpoint log。 2. 每隔 15s 计算迁移的快照点。 3. 每隔 10s 驱动本 partition 上所有活跃事务,为其检查 scheduler 的状态,用于事务上下文的 GC。 5. 每隔 10s 驱动刷新本 partition 上缓存的 clog 日志。 |
| LockWaitMgr | Trx | 1 | 用于热点行场景下,等锁队列兜底的唤醒保障,比如语句超时,session 被 kill。 |
| ClogAdapter | Trx | 8 | 用于事务层异步提交 clog。 |
| ObTransService | Trx | 6 | 主要负责以下功能: 用于事务提交过程处理 error msg 用于语句回滚失败之后的重试。 * 用于提前解行锁场景,后继事务的唤醒操作。 |
| GCCollector | storage | 1 | 用于定期检查本机所有 partition 是否能够 GC,如果可以则触发 GC 动作。 |
| RebuildSche | storage | 1 | 定期驱动需要 rebuild 的 partition 任务。 |
| PurgeWorker | storage | 1 | 后台 memtable 的标记删除操作。 |
| DAG | storage | 16 | dag 的工作线程,用于 partition 的转储、合并、迁移等任务的执行。 |
| DagScheduler | storage | 1 | dag 的调度线程。 |
| STableChecksumUp | storage | 1 | 用来 batch 提交汇报 sstable checksum 的任务。 |
| PartitionScheduler | storage | 2 | 用来调度转储和调度合并任务。 |
| MemstoreGC | storage | 1 | 用来回收转储预热完成之后的 frozen memstore。 |
| ObStoreFile | storage | 1 | 用来检查坏块和宏块回收。 |
| PartSerCb | storage | 40 | 用于 partition leader 上任、卸任任务处理(20 个线程)。 |
| ObPartitionSplit Worker | storage | 1 | 用于处理 partition 分裂的后台任务。 |
| FreezeTimer | storage | 1 | 检查 memstore 内存,触发冻结。 |
| RebuildTask | storage | 1 | 调度 D 副本拉取数据。 |
| IndexSche | storage | 1 | 调度建索引任务。 |
| FreInfoReload | storage | 1 | 同步内部表中 major freeze 相关信息。 |
| TableMgrGC | storage | 1 | 收 memtable,释放内存。 |
| BackupInfoUpdate | storage | 1 | 用于定时刷 backup 的相关数据。 |
| LogDiskMon | storage | 1 | 用于检测系统多盘的情况。 |
| KVCacheWash | storage | 1 | 用于 kvcache 的内存 wash。 通过配置项 _cache_wash_interval 来控制检测周期,默认是 200ms,范围 [1ms,1m]。 |
| KVCacheRep | storage | 1 | 用于整理 cache 的内存碎片回收内存。 通过配置项 _cache_wash_interval 来控制检测周期,默认是 200ms,范围 [1ms,1m]。 |
| RSMonitor | RS | 1 | 用来监控当前 RS 的状态。 |
| CacheCalculator | RS | 1 | 用来给 location_cache 和 schema_cache 预留内存。 |
| ObDailyMergeScheduler | RS | 1 | 用来调度每日合并。 |
| ObEmptyServerChecker | RS | 1 | 用来检测 OBS 上面是否不存在副本。 |
| ObFetchPrimaryDDLOperator | RS | 1 | 备库逻辑同步主库系统租户 schema。 |
| ObFreezeInfoUpdater | RS | 1 | 推动冻结进度和管理快照点回收点。 |
| ObGlobalIndexBuilder | RS | 1 | 调度全局索引的构建。 |
| ObGlobalMaxDecidedTransVersionMgr | RS | 1 | 统计全局最大事务版本号。 |
| ObLeaderCoordinator | RS | 1 | 管理集群中副本 leader 分布。 |
| ObLogArchiveScheduler | RS | 1 | 负责日志归档。 |
| ObMajorFreezeLauncher | RS | 1 | 负责每日发起定时合并。 |
| ObPartitionSpliter | RS | 1 | 负责调度分区合并。 |
| ObRebalanceTaskMgr | RS | 1 | 负责调度负载均衡任务的执行。 |
| ObRootBackup | RS | 1 | 负责调度备份任务。 |
| ObRootBalancer | RS | 1 | 负责生成负载均衡任务。 |
| ObRsGtsMonitor | RS | 1 | 监控 gts 实例的分布情况的,并基于 gts 副本的分布,生成迁移或补 gts 副本任务。 |
| ObRsGtsTaskMgr | RS | 1 | 执行 gts 副本任务的线程。 |
| ObHeartbeatChecker | RS | 1 | 负责检查和 OBS 之间的心跳状态。 |
| ObStandbyClusterSchemaProcessor | RS | 1 | 备库副本同步主库的普通租户 schema。 |
| ObRestoreScheduler | RS | 1 | 负责恢复流程的调度。 |
| ObWorkQueue | RS | 4 | 执行 RS 的异步任务。 线程数通过配置项 rootservice_async_task_thread_count 来控制,范围 [1,10]。 |
| ObAsyncTaskQueue | RS | 16 | 执行构建索引的任务。 |
| LocalityReload | RS | 1 | 定期刷新 locality 信息。 |
| RSqlPool | RS | 1 | 备库用来定期维护主库的 rs_list。 |
| ServerTracerTimer | RS | 1 | 用来维护和其他 server 状态的定时任务。 |
| LogEngine | CLOG | 1 | 统计监控 clog 盘空间使用情况,执行 clog 文件回收操作。 |
| CLGWR | CLOG | 1 | 负责 clog item 写盘。 |
| ClogHisRep | CLOG | 3 | partition 上下线时更新 clog history 内部表。 |
| BatchSubmitCtx | CLOG | 1 | 负责拆分一阶段优化的事务。 |
| LogScanRunnable | CLOG | 4 | observer 启动时负责扫描所有 clog 文件。 |
| LogStateDri | CLOG | 1 | 负责 clog 模块主备角色切换,检查副本级联状态。 |
| ObElectionGCThread | election | 1 | 负责 election 对象内存回收。 |
| Blacklist | CLOG | 1 | 负责探测与通信目的端 server 之间的网络是否联通。 |
| BRPC | CLOG | 5 | 负责后台执行 batch_rpc 聚合包发包。 |
| CLOGReqMinor | CLOG | 1 | 根据 clog 磁盘空间的情况触发 minor freeze,加快 clog 回收。 |
| LineCache | CLOG | 1 | 用于优化历史数据的同步,Liboblog 场景使用。 |
| EXTLogWash | CLOG | 1 | 频率:100ms。 |
| CLogFileGC | CLOG | 1 | 用于用于定期回收 clog 文件。 |
| CKPTLogRep | CLOG | 1 | 用于日志副本的 checkpoint 操作。 |
| RebuildRetry | CLOG | 1 | 用于重试 rebuild partition 的任务。 |
| ReplayEngine | CLOG | 物理核 | 用于备机 CLOG 的回放。 |
| PxPoolTh | SQL | 0 | 并行执行的线程池。 |
| sql_mem_timer | SQL | 1 | 用于自动内存管理。 |
| OmtNodeBalancer | common | 1 | 负责后台刷新多租户信息。 |
| MultiTenant | common | 1 | 负责刷多租户 CPU 配比,用于资源调度。 |
| SignalHandle | common | 1 | 信号处理线程。 |
| LeaseUpdate | common | 3 | 负责 rs 与各个 server 直接的 lease 监控。 |
| RsDDL | common | 1 | 负责 RS 的 DDL。 |
| MysqlIO | common | 12 | 负责 MySQL 的链接处理线程。 |
| all_meta_table | common | 8 | 用于 PG 或者 partition 状态的汇报。 |
| all_pg_partition_ meta_table | common | 8 | 用于 PG 内 partition 的状态的汇报。 |
| TimerMonitor | common | 1 | 监控内部定时线程动作,对执行时间异常的任务报警。 |
| ConfigMgr | common | 1 | 用于配置项的刷新。 |
| OB_ALOG | common | 1 | 用于系统异步日志的日志落盘。 |
| ELE_ALOG | election | 1 | 用于选举模块异步日志的日志落盘。 |
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




