开发者
资源
文档评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

简介

本文主要介绍OceanBase ApplySrv(日志回放服务,Log Apply Service)线程优化特性的优化原理和安装使用方法。

OceanBase是由蚂蚁集团完全自主研发的企业级原生分布式关系型数据库,具有原生分布式、高可用、高性能、兼容MySQL/Oracle等核心特性。OceanBase通过Paxos协议实现多副本强一致,日志回放服务(ApplySrv)负责将Paxos复制产生的CLog(Commit Log)回放到内存MEMTable,是写入链路的关键组件,其线程数直接影响写入吞吐与系统稳定性。

在原生OceanBase中,ApplySrv的线程数按租户unit_max_cpu的固定系数0.5进行计算,且不设上限。当租户规格较大(例如unit_max_cpu达到数百核)时,回放线程数会线性放大,带来如下问题:

  • 线程数过多导致上下文切换开销增大,CPU有效利用率下降。
  • 线程栈与相关结构占用内存上升。
  • 高并发回放时线程间资源竞争加剧,反而拖慢回放速度。

反之,当租户规格较小(例如unit_max_cpu为32u或更低)时,固定系数0.5计算得到的回放线程数偏少(仅16个或更少),日志回放速度可能成为写入链路的瓶颈,无法充分利用CPU资源。

ApplySrv线程优化特性通过引入租户级参数log_apply_thread_factor,允许用户自定义回放线程计算系数,并在系数非零时将线程数上限封顶为128。对于大规格租户,可通过调小系数或利用封顶机制避免线程数过度膨胀;对于小规格租户,可通过调大系数增加回放线程数,缓解日志回放瓶颈。本文测试场景为较常见的32u部署(带obproxy),属于规格偏小、回放线程数不足的情形,通过在32u场景下适当增加ApplySrv的线程数,sysbench的insert测试模型有5%左右的提升。