测试方法
本章基于文档数据库服务社区版3.4和社区版4.0版本的增强Ⅱ型规格,进行性能测试,具体包括测试环境,测试步骤,以及测试结果。
以下测试过程以集群和副本集实例类型为例。
测试环境
- 区域:华北-北京四
- 可用区:可用区二
- 弹性云服务器(Elastic Cloud Server,简称ECS):规格选择通用计算增强型c3.2xlarge.2,8U16GB,操作系统镜像使用CentOS 7.6 x86_64位版本。
- 被测试集群和副本集实例的数据库版本:包含3.4和4.0版本。
- 被测试集群实例的配置:每个实例均包含2个shard节点。
- 被测试集群和副本集实例的增强Ⅱ型规格:覆盖实例支持的全部规格类型,详见表1和表2。
表1 集群规格 集群编号
数据库版本
shard节点规格
被测集群1
3.4
2U4GB
被测集群2
3.4
2U8GB
被测集群3
3.4
4U8GB
被测集群4
3.4
4U16GB
被测集群5
3.4
8U16GB
被测集群6
3.4
8U32GB
被测集群7
3.4
16U32GB
被测集群8
3.4
16U64GB
被测集群9
3.4
32U128GB
被测集群10
3.4
64U256GB
被测集群11
4.0
2U4GB
被测集群12
4.0
2U8GB
被测集群13
4.0
4U8GB
被测集群14
4.0
4U16GB
被测集群15
4.0
8U16GB
被测集群16
4.0
8U32GB
被测集群17
4.0
16U32GB
被测集群18
4.0
16U64GB
被测集群19
4.0
32U128GB
被测集群20
4.0
64U256GB
表2 副本集规格 集群编号
数据库版本
实例规格
被测副本集1
3.4
2U4GB
被测副本集2
3.4
2U8GB
被测副本集3
3.4
4U8GB
被测副本集4
3.4
4U16GB
被测副本集5
3.4
8U16GB
被测副本集6
3.4
8U32GB
被测副本集7
3.4
16U32GB
被测副本集8
3.4
16U64GB
被测副本集9
3.4
32U128GB
被测副本集10
3.4
64U256GB
被测副本集11
4.0
2U4GB
被测副本集12
4.0
2U8GB
被测副本集13
4.0
4U8GB
被测副本集14
4.0
4U16GB
被测副本集15
4.0
8U16GB
被测副本集16
4.0
8U32GB
被测副本集17
4.0
16U32GB
被测副本集18
4.0
16U64GB
被测副本集19
4.0
32U128GB
被测副本集20
4.0
64U256GB
测试指标
OPS:Operation Per Second,数据库每秒执行的操作数。
测试步骤
- 配置workload文件。
按照表3所示的业务模型,配置workload中的“readproportion”、“insertproportion”、“updateproportion”的值。
按照表4所示的预置数据量,配置workload中的“recordcount”的值。
示例:配置workload_s1文件。
- recordcount = 100000000
- operationcount = 100000000
- insertproportion = 1
- readproportion = 0
- updateproportion = 0
- scanproportion = 0
参数“recordcount”和“operationcount”的值一致。
参数“insertproportion”、“readproportion”、“updateproportion”、“scanproportion”的值的总和为1。
- 使用如下命令,在数据库实例上创建测试数据库表,示例:usertable。
./bin/mongo --host $mongosIP --port $port << END_CMD
use admin
db.auth('rwuser', '$pwd')
use ycsb
sh.enableSharding("ycsb")
sh.shardCollection("ycsb.usertable",{_id:"hashed"},false,{numInitialChunks:200})
END_CMD
- 以业务模型workload_s1和集群实例类型为例,执行以下命令,准备数据。
./bin/ycsb load mongodb -s -P workloads/workload_s1 -p mongodb.url=mongodb://rwuser:${password}@${mongosIP}:8635,${mongosIP}:8635/ycsb?authSource=admin -threads ${threadNum} 1>workload_s1_load.result 2> workload_s1_load.log
- 以业务模型workload_s1和集群实例类型为例,执行以下命令,测试性能。
./bin/ycsb run mongodb -s -P workloads/workload_s1 -p mongodb.url=mongodb://rwuser:${password}@${mongosIP}:8635,${mongosIP}:8635/ycsb?authSource=admin -threads ${threadNum} -p maxexecutiontime=1800 1>workload_s1_run.result 2> workload_s1_run.log
- ${mongosIP}为DDS集群实例下mongo节点的内网IP。
- ${password}为DDS实例的管理员密码。
- ${threadNum}为运行测试的并发线程数,本次测试的并发数为128。
测试模型
- workload模型
- 测试并发数 :128
- 文档模型
- 预置数据量
本次性能测试中,针对每种规格的集群,测试了2种预置数据量下的性能。
不同规格集群的预置数据量不同,具体如下表所示。
表4 预置数据量 规格
预置小数据量
预置大数据量
2U4GB
存储容量:10GB
RecordCount:10000000
存储容量:100GB
RecordCount:100000000
2U8GB
存储容量:10GB
RecordCount:10000000
存储容量:100GB
RecordCount:100000000
4U8GB
存储容量:10GB
RecordCount:10000000
存储容量:100GB
RecordCount:100000000
4U16GB
存储容量:10GB
RecordCount:10000000
存储容量:100GB
RecordCount:100000000
8U16GB
存储容量:10GB
RecordCount:10000000
存储容量:100GB
RecordCount:100000000
8U32GB
存储容量:10GB
RecordCount:10000000
存储容量:100GB
RecordCount:100000000
16U32GB
存储容量:10GB
RecordCount:10000000
存储容量:100GB
RecordCount:100000000
16U64GB
存储容量:10GB
RecordCount:10000000
存储容量:100GB
RecordCount:100000000
32U128GB
存储容量:10GB
RecordCount:10000000
存储容量:100GB
RecordCount:100000000
64U256GB
存储容量:10GB
RecordCount:10000000
存储容量:100GB
RecordCount:100000000
