更新时间:2024-05-30 GMT+08:00

性能测试方法

本章基于GeminiDB Cassandra,进行性能测试,具体包括测试环境,测试步骤,以及测试结果。

测试环境

  • 区域:亚太-新加坡
  • 可用区:可用区1+可用区2+可用区3(跨3个可用区部署)
  • 弹性云服务器(Elastic Cloud Server,简称ECS):规格选择h3.4xlarge.2,16U32GB,操作系统镜像使用CentOS 7.5 64位版本。
  • 被测试实例的配置:每个实例均包含3个节点。
  • 被测试实例的规格:覆盖以下规格类型,详见表1 实例规格
    表1 实例规格

    编号

    规格

    cluster1

    4U16GB

    cluster2

    8U32GB

    cluster3

    16U64GB

    cluster4

    32U128GB

测试工具

本次测试采用开源社区的YCSB 0.15.0版本的测试工具,YCSB连接GeminiDB Cassandra集群负载均衡策略需使用RoundRobinPolicy。

YCSB是一款广泛使用的数据库性能测试工具,具体使用方法请参见YCSB

测试指标

OPS:Operation Per Second,数据库每秒执行的操作数。

测试步骤

  1. 配置workload文件。

    按照表2 测试模型所示的业务模型,配置workload中的“readproportion”、“insertproportion”、“updateproportion”、“scanproportion”、“readmodifywriteproportion”的值。

    按照表3 预置数据量所示的预置数据量,配置workload中的“recordcount”的值。

  2. 以测试模型workload-insert-mostly为例,执行以下命令,准备数据。

    sh bin/ycsb.sh load cassandra-cql -P workloads/workload-insert-mostly -p "hosts=${ContactPoints}" -p "port=${port}" -p "cassandra.username=${username}" -p "cassandra.password=${password}" -p operationcount=400000000 -p recordcount=400000000 -p exportfile=./data_load.exp -threads ${threadNum} -s > data_load.log 2>&1 &

  3. 以测试模型workload-insert-mostly为例,执行以下命令,测试性能。

    sh bin/ycsb.sh run cassandra-cql -P workloads/workload-insert-mostly -p "hosts=${ContactPoints}" -p "port=${port}" -p "cassandra.username=${username}" -p "cassandra.password=${password}" -p operationcount=9000000 -p recordcount=9000000 -p maxexecutiontime=3600 -p exportfile=./workload-insert-mostly.exp -threads ${threadNum} -s > workload-insert-mostly_run.log 2>&1 &

测试模型

  • workload模型
    表2 测试模型

    测试模型编号

    测试模型

    读多写少场景

    workload-read-mostly

    95% read, 5% update

    读写均衡场景

    workload-read-write-combination

    50% update, 50% read

    读改写均衡场景

    workload-read-modify-write

    50% read, 50% readmodifywrite

    读更新写混合场景

    workload-mixed-operational-analytical

    65% read, 25% update, 10% insert

    写多读少场景

    workload-insert-mostly

    90% insert, 10% read

  • 数据模型

    fieldlength=100, fieldcount=10

  • 预置数据量

    本次性能测试中,针对每种规格的实例,测试了如下预置数据量的性能。

    预置数据具体如下表所示:

    表3 预置数据量

    编号

    规格

    预置数据量

    cluster1

    4U16GB

    50GB

    cluster2

    8U32GB

    100GB

    cluster3

    16U64GB

    200GB

    cluster4

    32U128GB

    400GB