TPC-C 测试报告

背景信息

TPC-C是业界常用的一套Benchmark,由TPC委员会制定发布,用于评测数据库的联机交易处理(偏向OLTP能力)。主要涉及10张表,包含了NewOrder(新订单的生成)、Payment(订单付款)、OrderStatus(最近订单查询)、Delivery(配送)和StockLevel(库存缺货状态分析)等五类业务事务模型。TPC-C使用tpmC值(Transactions per Minute)来衡量系统最大有效吞吐量(MQTh,Max Qualified Throughput),其中Transactions以NewOrder Transaction为准,即最终衡量单位为每分钟处理的新订单数。 本文使用Benchmark-Boot提供的TPC-C验证PolarDB-X的性能表现。

说明 本文的TPC-C的实现基于TPC-C的基准测试,并不能与已发布的TPC-C基准测试结果相比较,本文中的测试并不符合TPC-C基准测试的所有要求。

Benchmark Boot 是为 PolarDB-X 开发的一站式压测平台,目前支持的基准测试包括 Sysbench、TPC-C、TPC-H,通过图形化的方式提升测试效率。

测试设计

测试数据量

基于1000 Warehouse,其中主要的表数据量如下:

  • bmsql_order_line 3亿行
  • bmsql_stock 1亿行
  • bmsql_customer、bmsql_history、bmsql_oorder各3000万行
  • 主机资源

组件名称 机型 说明
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

benchmark_connect

步骤3:调整实例参数

通过Benchmark-Boot,左侧运行压测->数据库连接,设置调优参数,建议勾选所有的TP模式调优参数

benchmark_optimize

步骤4:压测数据准备

建库

打开Benchmark-Boot, 选择左侧运行压测->TPC-C->切换库,填入库名tpcc_auto,选择AUTO模式,提交

benchmark_tpcc_auto

导入数据

建库完成后,下拉页面到底端,导入TPC-C数据,仓数1000,并发可以填写500,等待数据准备完成

benchmark_tpcc_load

步骤5:执行压测

选择左侧运行压测->TPC-C->运行TPC-C,填入压测参数进行压测

benchmark_tpcc_run

测试结果

200并发 400并发 600并发 800并发 1000并发
138091.09 157139.66 174417.79 176137.82 176861.03
01:42:57,724 [main] INFO   jTPCC : Term-00, warehouses=1000
01:42:57,724 [main] INFO   jTPCC : Term-00, terminals=1000
01:42:57,725 [main] INFO   jTPCC : Term-00, runMins=60
01:42:57,725 [main] INFO   jTPCC : Term-00, limitTxnsPerMin=0
01:42:57,725 [main] INFO   jTPCC : Term-00, terminalWarehouseFixed=true
01:42:57,725 [main] INFO   jTPCC : Term-00,
01:42:57,725 [main] INFO   jTPCC : Term-00, newOrderWeight=45
01:42:57,725 [main] INFO   jTPCC : Term-00, paymentWeight=43
01:42:57,725 [main] INFO   jTPCC : Term-00, orderStatusWeight=4
01:42:57,725 [main] INFO   jTPCC : Term-00, deliveryWeight=4
01:42:57,725 [main] INFO   jTPCC : Term-00, stockLevelWeight=4
01:42:57,725 [main] INFO   jTPCC : Term-00, newOrderRemotePercent=10
01:42:57,725 [main] INFO   jTPCC : Term-00, paymentRemotePercent=15
.......

02:43:02,186 [Thread-862] INFO   jTPCC : Term-00, Measured tpmC (NewOrders) = 176861.03
02:43:02,186 [Thread-862] INFO   jTPCC : Term-00, Measured tpmTOTAL = 393104.67
02:43:02,186 [Thread-862] INFO   jTPCC : Term-00, Session Start     = 2023-03-22 01:43:01
02:43:02,186 [Thread-862] INFO   jTPCC : Term-00, Session End       = 2023-03-22 02:43:02
02:43:02,186 [Thread-862] INFO   jTPCC : Term-00, Transaction Count = 23588042

results matching ""

    No results matching ""