更新时间:2023-12-04 GMT+08:00

测试方法

本章基于文档数据库服务社区版3.4、4.0、4.2和4.4版本的通用型规格和增强Ⅱ型规格进行性能测试,具体包括测试环境和测试步骤。

以下测试过程以集群和副本集实例类型为例。

测试环境

  • 区域:亚太-新加坡
  • 可用区:可用区一
  • 弹性云服务器(Elastic Cloud Server,简称ECS):
    • 通用型规格选择通用计算型s3.2xlarge.2,8U16GB,操作系统镜像使用CentOS 7.5 64位版本。
    • 增强Ⅱ型规格选择通用计算增强型c3.2xlarge.2,8U16GB,操作系统镜像使用CentOS 7.6 x86_64位版本。
  • 被测试实例的配置:
    • 集群实例包含2个mongos节点、2个shard节点,存储空间选择600GB。
    • 副本集实例包含3个节点,存储空间选择600GB。

测试工具

本次测试采用开源社区的YCSB 0.17.0版本的测试工具。

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

测试指标

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

测试步骤

  1. 使用YCSB执行如下命令,加载测试数据:

    ./bin/ycsb load mongodb -s -p workload=site.ycsb.workloads.CoreWorkload -p recordcount=${recordcount} -p mongodb.url="mongodb://${userName}:${password}@${mongosIP}:${port}/ycsb?authSource=admin" -threads ${threadNum}

    • recordcount=${recordcount}:加载至DDS实例的数据总量。
    • mongodb.url="mongodb://${userName}:${password}@${mongosIP}:${port}/ycsb?authSource=admin":DDS实例的高可用连接地址。
    • threads ${threadNum} :客户端的并发线程数。
  2. 使用YCSB执行如下命令,进行性能压测:
    ./bin/ycsb run mongodb -s -p workload=site.ycsb.workloads.CoreWorkload -p recordcount=${recordcount} -p operationcount=${operationcount} -p insertproportion=0 -p readproportion=1 -p updateproportion=0 -p requestdistribution=zipfian -p mongodb.url="mongodb://${userName}:${password}@${mongosIP}:${port}/ycsb?authSource=admin" -threads ${threadNum}
    • recordcount=${recordcount}:加载至DDS实例的数据总量。
    • operationcount=${operationcount}:执行读写测试的总操作次数。
    • insertproportion=0:加载数据的操作比例。
    • readproportion=1:读操作比例。
    • updateproportion=0:更新操作比例。
    • mongodb.url="mongodb://${userName}:${password}@${mongosIP}:${port}/ycsb?authSource=admin":DDS实例的高可用连接地址。
    • threads ${threadNum} :客户端的并发线程数。
    • recordcount和operationcount的值一致。
    • insertproportion、readproportion、updateproportion的值的总和为1。

测试模型

  • 业务模型
    表1 业务模型

    业务模型编号

    业务模型

    S1

    100% insert

    S2

    90% update ,10% read

    S3

    65% read ,25% insert, 10% update

    S4

    90% read ,5% insert, 5% update

    S5

    50% update, 50% read

    S6

    100% read

    S7

    95% read ,5% update

    S8

    5% read ,95% update

    S9

    100% update

  • 文档模型

    使用YCSB默认配置,每个文档大小1KB,默认“_id”索引。

  • 预置数据量

    本次性能测试中,针对每种规格的集群,测试了2种预置数据量下的性能。

    不同规格集群的预置数据量不同,具体如下表所示。

    表2 预置数据量

    规格

    预置小数据量

    预置大数据量

    测试并发数

    1U4GB

    RecordCount:1000000

    RecordCount:10000000

    100

    2U4GB

    RecordCount:1000000

    RecordCount:10000000

    100

    2U8GB

    RecordCount:2000000

    RecordCount:20000000

    100

    2U16GB

    RecordCount:4000000

    RecordCount:40000000

    100

    4U8GB

    RecordCount:2000000

    RecordCount:20000000

    100

    4U16GB

    RecordCount:4000000

    RecordCount:40000000

    100

    4U32GB

    RecordCount:10000000

    RecordCount:100000000

    100

    8U16GB

    RecordCount:4000000

    RecordCount:40000000

    100

    8U32GB

    RecordCount:10000000

    RecordCount:100000000

    100

    8U64GB

    RecordCount:10000000

    RecordCount:100000000

    100

    16U32GB

    RecordCount:10000000

    RecordCount:100000000

    100

    16U64GB

    RecordCount:10000000

    RecordCount:100000000

    100

    16U128GB

    RecordCount:10000000

    RecordCount:100000000

    100

    32U64GB

    RecordCount:10000000

    RecordCount:100000000

    200

    32U128GB

    RecordCount:10000000

    RecordCount:100000000

    200

    64U256GB

    RecordCount:10000000

    RecordCount:100000000

    400

  • 数据一致性模型

    弱一致性:Write Concern为{w : 1, j : false},数据写入单个节点磁盘,将返回结果。后台异步持久化下盘,为默认的Write Concern设置。