鲲鹏社区首页
中文
注册
开发者
OceanBase数据库性能调优

OceanBase数据库性能调优

oceanbase

发表于 2026/01/16

0

作者 | 张久同

一、实践背景概述

基于鲲鹏920处理器在BCLinux 21.10系统下使用Jmeter对OceanBase数据库业务进行测试,总共34个测试业务。Jmeter测试业务的并发量主要参考生产环境的TPS,首先在数据库集群可以满足生产的请求并发量的基础上,看响应时间,Jmeter通过不断加大线程数,优先满足TPS大于生产环境,然后看响应时间。另外为了避免业务之间互相影响,优先进行单业务的测试验证和调优,然后进行34个业务的混合测试验证。本文提供单业务的调优分析与措施。

测试环境信息

项目

说明

服务器

3台

CPU

4 * 鲲鹏920 5250处理器

内存

24 * 32G

磁盘

2 * 480G SSD + 6 * 960 SSD

OS

BCLinux 21.10

软件

OceanBase 3.2.4.5 hotfix8

组网环境

数据库采用3:3:3的组网架构,共9台机器,组网如下所示:

二、性能瓶颈分析

CPU分析

CPU属于低负载场景,与其他区域一致,且节点间CPU负载基本持平,是由于没有进行大量的绑表组操作,因为发现绑表组可能会对其他SQL有劣化。

内存分析

OceanBase根据租户提前规划了内存的使用大小,与其他局点一致,没有瓶颈。

网络分析

2张10GE的网卡组的bond4,网络负载也在30MB/s内,不存在性能瓶颈。

磁盘分析

SQL处理的数据基本都存在内存中,没有磁盘读写。

热点函数分析

由于已经使用了其他区域编译优化过的OceanBase版本,因此没有明显的热点函数。

三、性能调优实践

主要进行绑核、grub参数以及OS调度层面的优化。

BIOS调优

说明:

如何进入BIOS界面的具体操作请参见《TaiShan 服务器 BIOS 参数参考(鲲鹏920处理器)》中“进入BIOS界面”的相关内容。

配置项

配置路径

配置值

配置说明

关闭CPU预取

Advanced > MISC Config > CPU Prefetching Configuration

Disabled

鲲鹏920处理器下数据库场景CPU预取命令率低,需要关闭预取,提升性能。

开启性能模式

Advanced > Performance Config > Power Policy

Performance

确保CPU的频率一直与运行在最大。

内存刷新频率

Advanced > Memory Config > Custom Refresh Rate

Auto

提升内存读写访存性能。

开启NUMA

Advanced > Memory Config > NUMA

Enable

ARM环境下需要开启NUMA,默认开启。


OS优化

优化grub参数(永久生效)。

1. 增加以下设置。

nohz=offc
group_disable=files
idle=poll

2. 去掉“numa=off”,NUMA关闭会导致网络时延增加,关闭NUMA后数据库性能下降,需要开启NUMA。

优化OS参数。使用Steal内核调度特性,帮助进程抢占时间片。

echo "echo STEAL > /sys/kernel/debug/sched_features" >> /etc/rc.d/rc.local

网卡中断绑核

生产环境(Intel+OceanBase)CPU利用率约10%左右,占比0.4%左右,约0.6个核心。网卡使用core预留8个,将网络中断绑定在网卡所在NUMA上。

四、调优实践效果

通过BIOS+grub参数以及不同的进程线程绑核方式下,业务性能提升5%~20%。

本页内容