Sysbench 测试报告
背景信息
Sysbench是一款开源的、模块化的、跨平台的多线程性能测试工具,可以执行数据库在CPU、内存、线程、IO等方面的性能测试。
Benchmark Boot 是为 PolarDB-X 开发的一站式压测平台,目前支持的基准测试包括 Sysbench、TPC-C、TPC-H,通过图形化的方式提升测试效率。
测试设计
测试数据量
sysbench 数据包含16张表,每张表1千万的数据量
测试用例
Sysbench验证PolarDB-X在分区表以及单表均衡两种情况下性能表现。
分区表 | 将Sysbench中每张表都按照id列进行分片,通过分布式将大表的数据均匀分布到多节点,提供分区表的线性扩展性,比如:电商交易场景 |
---|---|
单表均衡 | 将Sysbench中的表建成单表,仅通过分布式将16张单表均匀分布到多节点,提供多个单表的线性扩展性,比如:Saas场景 |
主机资源
组件名称 | 机型 | 说明 |
---|---|---|
OPS机器 | ecs.g7.4xlarge | 安装部署 |
计算节点 (CN) | ecs.hfg7.4xlarge * 3 | 16c64g 单价:2324元/月 |
存储节点 (DN) + 元数据节点(GMS) | ecs.i4.4xlarge * 3 | 16c128g + 3.5TB的存储 单价:3776元/月 |
存储节点需要更好的IO、而计算节点需要更强的CPU计算,采用分离部署的方式,可以提升资源利用的性价比
压力机
组件名称 | 机型 | 说明 |
---|---|---|
压力机 | ecs.hfg7.6xlarge | 24c96g |
测试方法
步骤1:准备压力机
部署Benchmark-Boot,参考文档:使用Benchmark Boot进行压测
# 下载镜像
docker pull polardbx/benchmark-boot:latest
# 启动容器
docker run -itd --name 'benchmark-boot' --privileged --net=host \
-v /etc/localtime:/etc/localtime polardbx/benchmark-boot:latest \
/usr/sbin/init
# 验证
curl http://127.0.0.1:4121/
如果采用离线部署方式,可以采用ops机器下载benchmark-boot镜像后上传到私有仓库
步骤2:准备压测所用 PolarDB-X 实例
创建 PolarDB-X 实例,详细操作步骤请参见:通过 PXD 部署 实例创建参数:
version: v1
type: polardbx
cluster:
name: pxc-test
no_logger: false
gms:
image: polardbx/polardbx-engine:v2.4.0_8.4.19
engine: galaxy
engine_version: "8.0"
host_group: [192.168.1.102, 192.168.1.103, 192.168.1.104]
resources:
mem_limit: 16G
cpu_limit: 8
cn:
image: polardbx/polardbx-sql:v2.4.0_5.4.19
replica: 3
nodes:
- host: 192.168.1.102
- host: 192.168.1.103
- host: 192.168.1.104
resources:
mem_limit: 64G
cpu_limit: 16
dn:
image: polardbx/polardbx-engine:v2.4.0_8.4.19
engine: galaxy
engine_version: "8.0"
replica: 3
nodes:
- host_group: [192.168.1.105, 192.168.1.106, 192.168.1.107]
- host_group: [192.168.1.106, 192.168.1.107, 192.168.1.105]
- host_group: [192.168.1.107, 192.168.1.105, 192.168.1.106]
resources:
mem_limit: 50G
cpu_limit: 16
验证实例可连接,打开Benchmark-Boot,选择左侧运行压测->数据库连接,将数据库链接信息填入Benchmark-Boot,点击“提交”
注意:PolarDB-X提供了多个CN节点,生产环境推荐使用负载均衡设备进行访问,POC测试场景可以使用benchmark-boot自带的loadbalance机制。 配置例子: 主机ip填入多个地址,比如:192.168.1.102:3306,192.168.1.103:3306,192.168.1.104:3306,对应的端口填入-1
步骤3:调整实例参数
通过Benchmark-Boot,左侧运行压测->数据库连接,设置调优参数,建议勾选所有的TP模式调优参数
步骤4:压测数据准备
准备分区表
打开Benchmark-Boot, 选择左侧 运行压测->Sysbench->切换库,填入库名sbtest_auto,选择AUTO模式
提交后,下拉到页面底部,填入准备数据的参数,表16张,表大小10000000,并发数16,不勾选单表均衡模式,点击提交,等待准备数据任务完成
准备单表均衡数据
打开Benchmark-Boot, 选择左侧 运行压测->Sysbench->切换库,填入库名sbtest_single,选择AUTO模式
提交后,下拉到页面底部,填入准备数据的参数,表16张,表大小10000000,并发数16,勾选单表均衡模式,点击提交,等待准备数据任务完成
步骤5:执行压测
压测场景 | 名称 |
---|---|
点查 | oltp_point_select |
只读 | oltp_read_only |
读写 | oltp_read_write |
按索引更新 | oltp_update_index |
非索引更新 | oltp_update_non_index |
写入 | oltp_write_only |
表格中包含本次压测的Sysbench场景名称,下文以点查oltp_point_select场景为例展示压测方法
打开Benchmark-Boot,确认要压测的数据库是否正确,如果不是,请点击切换库
选择左侧 运行压测->Sysbench, 在运行Sysbench表单中
注意 其他参数 要用JSON格式,可拷贝如下设置,设置完成后点击运行压测
{
"disable-ps-mode":false,
"range-size":5
}
查看压测结果,点击查看实时结果,进入实时数据页面查看实时结果
- 等待压测完成后,记录结果
- 回到压测页面,可以选择填充上次压测参数,将场景或者并发稍作修改后,可继续压测其他场景
测试结果
以下结果均以QPS作为衡量性能的标准。
分区表性能
workload | 200并发 | 400并发 | 600并发 | 800并发 | 1000并发 | 2000并发 |
---|---|---|---|---|---|---|
oltp_point_select | 298986.10 | 332317.22 | 353429.85 | 368768.08 | 384603.36 | 401115.95 |
oltp_read_only | 127038.97 | 149952.23 | 158191.47 | 164165.17 | 167982.73 | 175842.29 |
oltp_read_write | 70659.78 | 93330.17 | 100237.59 | 106222.37 | 110953.07 | 122152.42 |
oltp_update_index | 25998.96 | 34852.18 | 42258.07 | 48654.28 | 51277.58 | 65098.83 |
oltp_update_non_index | 26524.99 | 33817.18 | 41295.47 | 48256.25 | 52668.72 | 65155.87 |
oltp_write_only | 25870.66 | 34311.45 | 40751.06 | 47657.71 | 50757.05 | 61934.61 |
单表均衡性能
workload | 200并发 | 400并发 | 600并发 | 800并发 | 1000并发 | 2000并发 |
---|---|---|---|---|---|---|
oltp_point_select | 301323.14 | 330835.04 | 349769.66 | 365575.37 | 379552.11 | 396272.64 |
oltp_read_only | 266093.60 | 296501.34 | 315341.23 | 325793.21 | 339478.66 | 351669.63 |
oltp_read_write | 84944.97 | 115190.00 | 134560.57 | 148352.19 | 156346.45 | 172508.63 |
oltp_update_index | 26522.20 | 35441.67 | 41753.73 | 47883.84 | 53172.88 | 64892.92 |
oltp_update_non_index | 26247.67 | 34830.22 | 41075.44 | 46921.88 | 52130.87 | 65652.31 |
oltp_write_only | 26085.07 | 34952.64 | 40768.98 | 46192.18 | 50490.49 | 59538.28 |