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%。


