BenchmarkSQL测试三节点OB数据库TPC-C性能问题

【 使用环境 】测试环境
【 OB or 其他组件 】OB、OBProxy、OCP Express、OBAgent
【 使用版本 】oceanbase-all-in-one-4.3.1.0-100000032024051615.el8.aarch64.tar.gz
【问题描述】 请教用BenchmarkSQL工具做TPC-C性能测试的问题:目前我有3台鲲鹏服务器做observer集群(每个节点96C256G),ob安装在服务器本地的SSD上,data、log盘使用的是外接块存储(XFS文件系统),每个节点对应一个zone,部署集群使用的是25G网络,4.3.1社区版部署。BenchmarkSQL是一台64C100G的虚拟机,通过25G网络连接obsever集群主节点,租户的配置是89C128G,zone优先级是random:

性能测试参数如下:

warehouses=200

loadWorkers=40

terminals=600

现在发现做性能测试的时候,主节点的CPU利用率较高(82%),其余两个节点比较空闲(30%):

3节点集群测出的tpmC (NewOrders) = 148694.68,单节点在该配置下可以达到221531.43,请问这个是什么原因呢?如何配置能使3节点集群的每个节点负载更均衡、性能数据更好?
【复现路径】必现
【附件及日志】

【备注】已确认存储、内存、网络均不是瓶颈

2 个赞

1、查看 primary zone是如何设置的?

2、是否使得了tablegroup?

2 个赞
  1. RANDOM
  2. 使用了tablegroup,按照官方文档调试的:
    https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001033259
2 个赞

有部署ODP吗?是按照这个部署架构吗?

在用户租户下查看下表的Leader分布情况
select * from oceanbase.DBA_OB_TABLE_LOCATIONS where ROLE=‘LEADER’;

查看下租户资源配置

SELECT c.TENANT_ID, e.TENANT_NAME, concat(c.NAME, ': ', d.NAME)pool:conf,concat(c.UNIT_COUNT, ’ unit: ', d.min_cpu, ‘C/’, ROUND(d.MEMORY_SIZE/1024/1024/1024,0), “G”) unit_info FROM DBA_OB_RESOURCE_POOLS c, DBA_OB_UNIT_CONFIGS d, DBA_OB_TENANTS e WHERE c.UNIT_CONFIG_ID=d.UNIT_CONFIG_ID AND c.TENANT_ID=e.TENANT_ID AND c.TENANT_ID>1000 ORDER BY c.TENANT_ID;

2 个赞

查看流量请求是否均衡:
select
svr_ip,
count(*) as QPM
from
oceanbase.gv$ob_sql_audit
where
tenant_id = 1004 ####需要修改
and IS_EXECUTOR_RPC = 0
and request_time > (time_to_usec(now()) - 60000000)
and request_time < time_to_usec(now())
group by
svr_ip
order by
QPM;

注:在压测的过程中查询

2 个赞
  1. 有部署ODP:

  2. 有点长,详见附件
    leader分布查询.txt (278.8 KB)

租户资源配置:

1 个赞

root@sys下查不到?

1 个赞

你ocp和odp部署到其中一台observer(192.168.21.10)上了,这台observer的cpu的资源消耗就比较高,可以独立部署再也压测试下

1 个赞

不会吧,OCP是用白屏部署自动分配的1C2G:


odp也是内存上限我手动设置的4G,CPU也是自动分配的,这个会占用多大CPU呢?而且即使是主节点与其他两个节点不均衡,那如何把主节点的CPU利用率也打满?我现在换了一个配置:
warehouses=1000
loadWorkers=100
terminals=600
还是所有节点的CPU都无法打满

1 个赞

我没有把ocp和odp与BenchmarkSQL压力机部署到一起,是因为BenchmarkSQL是一台X86的虚拟机,而我的数据库集群用的是鲲鹏服务器,这种方式应该没法把ocp和odp与BenchmarkSQL压力机部署到一起吧?

1 个赞

ocp,odp部署到x86 ,ob部署到arm鲲鹏服务器 这种部署支持

尝试了一下,部署失败:


日志:
部署日志.txt (53.1 KB)

1 个赞

能否发一下有关外接块存储的性能数据。在 sys 租户里分别对每个节点执行下面 SQL

ALTER SYSTEM RUN JOB "io_calibration";

等后台任务结束后跑

SELECT * FROM oceanbase.V$OB_IO_CALIBRATION_STATUS;
SELECT * FROM oceanbase.GV$OB_IO_BENCHMARK;

详细帮助文档参考: 磁盘性能校准-V4.3.2-OceanBase 数据库文档-分布式数据库使用文档

[2024-08-16 18:17:21.878] [DEBUG] – root@10.0.21.10 execute: ldd /root/ycj_ob_cluster/oceanbase/bin/observer

10.0.21.10 observer命令 依赖的库文件检查失败,可以手动执行下,看缺少哪些库文件,手动安装下


[2024-08-16 18:17:21.878] [INFO] Remote oceanbase-ce-4.3.1.0-100000032024051615.el8-7221c9cac6031c3ba59f370ef2cdabb606d5daac repository lib check
[2024-08-16 18:17:21.878] [DEBUG] – 10.0.21.10 oceanbase-ce-4.3.1.0-100000032024051615.el8-7221c9cac6031c3ba59f370ef2cdabb606d5daac repository lib check
[2024-08-16 18:17:21.878] [DEBUG] – root@10.0.21.10 set env LD_LIBRARY_PATH to ‘/root/ycj_ob_cluster/oceanbase/lib:’
[2024-08-16 18:17:21.878] [DEBUG] – root@10.0.21.10 execute: ldd /root/ycj_ob_cluster/oceanbase/bin/observer
[2024-08-16 18:17:21.922] [DEBUG] – exited code 1, error output:
[2024-08-16 18:17:21.922] [DEBUG]
[2024-08-16 18:17:21.923] [ERROR] Failed to execute repository lib check.
[2024-08-16 18:17:21.923] [DEBUG] - sub install_repo ref count to 0
[2024-08-16 18:17:21.923] [DEBUG] - export install_repo


21.13是x86机器,上面部署odp,21.10-12是鲲鹏机器,部署ob、agent、ocp。用13节点白屏部署,部署日志获取的所有包都是x86的,没有aarch64的,我感觉这个才是部署失败的原因吧?


这里才是部署失败的原因

使用x86的包部署到arm服务器上是否为这样的报错 我再确认下,
你使用arm版本的包部署吧,另外建议使用ocp 不建议使用ocp-express

这里日志 x86和arm混布observer时,报错不友好,计划在OBD 3.0.0版本优化