测试方法
本章基于文档数据库服务社区版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。
测试指标
OPS:Operation Per Second,数据库每秒执行的操作数。
测试步骤
- 使用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} :客户端的并发线程数。
- 使用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。
测试模型
- 业务模型
- 文档模型
- 预置数据量
本次性能测试中,针对每种规格的集群,测试了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