测试环境
配置项 | 压测ECS实例 | MongoDB物理机架构实例 | MongoDB云盘架构实例 |
地域及可用区 | 华东1(杭州)可用区H | 华东1(杭州)可用区H | 华东1(杭州)可用区H |
网络类型 | 专有网络VPC | 专有网络VPC | 专有网络VPC |
实例规格族 | 计算平衡增强型c6e | 通用型和独享型 | 独享型 |
实例规格 | ecs.c6e.2xlarge(8核 16 GB) | 包含多种在售规格,详情请参见测试结果。 | 包含多种在售规格,详情请参见测试结果。 |
存储类型 | ESSD PL1云盘 | SSD本地盘 | ESSD PL1云盘 |
拓扑结构 | - | 标准副本集实例(三节点,一个主节点、一个从节点和一个隐藏节点) | 标准副本集实例(三节点,一个主节点、一个从节点和一个隐藏节点) |
镜像版本 | Alibaba Cloud Linux 3.2104 LTS 64位 | 3.10.0-327.ali2017.alios7.x86_64 | 4.19.81-17.2.al7.x86_64 |
实例内核版本 | - | MongoDB 4.2(小版本基线4.2.13) | MongoDB 4.4(小版本基线4.4.1) |
可调一致性配置 | - | Default read/write concern | Default read/write concern |
说明 压测ECS实例和云数据库MongoDB实例在同一地域及可用区,RTT(Round-Trip Time)大概在0.104ms左右。
测试工具
本文将采用开源社区的YCSB 0.17.0压测工具进行压测。
说明 YCSB是一款Java编写的支持多种数据库的性能测试工具,具体安装和使用方法请参见YCSB。
测试方案
将ECS实例的主私网IP添加到云数据库MongoDB实例的白名单中。如何添加,请参见修改白名单。
说明 您可以登录ECS控制台,在实例详情页面的网络信息区域查看ECS实例的主私网IP。
远程连接ECS实例。如何连接,请参见连接ECS实例。
使用YCSB工具加载测试数据。
./bin/ycsb load mongodb -s -p workload=site.ycsb.workloads.CoreWorkload -p recordcount=1000000 -p mongodb.url="mongodb://test:****@dds-bp13e84d11****.mongodb.rds.aliyuncs.com:3717/admin" -threads 8
执行如下测试命令,进行性能压测。
./bin/ycsb run mongodb -s -p workload=site.ycsb.workloads.CoreWorkload -p recordcount=1000000 -p operationcount=5000000 -p insertproportion=0 -p readproportion=50 -p updateproportion=50 -p requestdistribution=zipfian -p mongodb.url="mongodb://test:****@dds-bp13e84d11****.mongodb.rds.aliyuncs.com:3717/admin" -threads 8
您需要修改如下参数值:
recordcount=1000000
:加载至云数据库MongoDB实例的数据总数。operationcount=5000000
:执行读写测试的总次数。
insertproportion=0
:加载数据操作比例。
readproportion=50
:读操作比例。
updateproportion=50
:更新操作比例。
mongodb.url="mongodb://test:****@dds-bp13e84d11****.mongodb.rds.aliyuncs.com:3717/admin"
:云数据库MongoDB实例的连接地址。本文使用的数据库账号为test,所属数据库为admin。threads 8
:客户端的并发线程数。
测试结果
场景说明
参数说明
recordcount
:加载至云数据库MongoDB实例的数据总数。
operationcount
:执行读写测试的总次数。
threads
:客户端的并发线程数。
throughput
:吞吐量,以每秒操作数(OPS,Operation per second)为单位。
RAL
:读操作平均延迟,单位:微秒(us)。
WAL
:写操作平均延迟,单位:微秒(us)。
说明 本文中RAL
或WAL
取值为0,表示不涉及读操作或写操作。
如下为物理机架构实例和云盘架构实例在不同读写比下的测试结果以及性能对比图。
物理机架构实例(MongoDB 4.2)
加载测试数据
CPU:Memory | 实例规格 | recordcount | threads | throughput | RAL | WAL |
1:2 | 1核 2 GB(通用型) | 1000000 | 4 | 3589 | 0 | 1110 |
2核 4 GB(通用型) | 2000000 | 8 | 7629 | 0 | 521 |
4核 8 GB(通用型) | 4000000 | 16 | 24300 | 0 | 654 |
8核 16 GB(通用型) | 8000000 | 32 | 26745 | 0 | 1191 |
1:4 | 8核 32 GB(通用型) | 16000000 | 32 | 29090 | 0 | 1095 |
16核 64 GB(通用型) | 32000000 | 128 | 41098 | 0 | 3033 |
1:8 | 2核 16 GB(独享型) | 8000000 | 8 | 6553 | 0 | 1217 |
4核 32 GB(独享型) | 16000000 | 16 | 14526 | 0 | 1097 |
8核 64 GB(独享型) | 32000000 | 32 | 35437 | 0 | 899 |
16核 128 GB(独享型) | 64000000 | 160 | 60078 | 0 | 2658 |
r:w=100:0
CPU:Memory | 实例规格 | operationcount | threads | throughput | RAL | WAL |
1:2 | 1核 2 GB(通用型) | 1000000 | 4 | 6387 | 623 | 0 |
2核 4 GB(通用型) | 2000000 | 8 | 12893 | 616 | 0 |
4核 8 GB(通用型) | 4000000 | 16 | 37016 | 427 | 0 |
8核 16 GB(通用型) | 8000000 | 32 | 48014 | 658 | 0 |
1:4 | 8核 32 GB(通用型) | 16000000 | 32 | 44251 | 1589 | 0 |
16核 64 GB(通用型) | 32000000 | 128 | 57252 | 2226 | 0 |
1:8 | 2核 16 GB(独享型) | 8000000 | 8 | 12436 | 641 | 0 |
4核 32 GB(独享型) | 16000000 | 16 | 20551 | 773 | 0 |
8核 64 GB(独享型) | 32000000 | 32 | 50246 | 632 | 0 |
16核 128 GB(独享型) | 64000000 | 160 | 66876 | 2385 | 0 |
r:w=95:5
CPU:Memory | 实例规格 | operationcount | threads | throughput | RAL | WAL |
1:2 | 1核 2 GB(通用型) | 1000000 | 4 | 4556 | 864 | 1079 |
2核 4 GB(通用型) | 2000000 | 8 | 10391 | 757 | 914 |
4核 8 GB(通用型) | 4000000 | 16 | 34411 | 453 | 561 |
8核 16 GB(通用型) | 8000000 | 32 | 41095 | 763 | 925 |
1:4 | 8核 32 GB(通用型) | 16000000 | 32 | 39920 | 785 | 926 |
16核 64 GB(通用型) | 32000000 | 128 | 55148 | 2305 | 2381 |
1:8 | 2核 16 GB(独享型) | 8000000 | 8 | 8869 | 871 | 1394 |
4核 32 GB(独享型) | 16000000 | 16 | 18206 | 856 | 1192 |
8核 64 GB(独享型) | 32000000 | 32 | 47111 | 664 | 861 |
16核 128 GB(独享型) | 64000000 | 160 | 68801 | 2312 | 2449 |
r:w=50:50
CPU:Memory | 实例规格 | operationcount | threads | throughput | RAL | WAL |
1:2 | 1核 2 GB(通用型) | 1000000 | 4 | 3062 | 1207 | 1399 |
2核 4 GB(通用型) | 2000000 | 8 | 6610 | 1128 | 1318 |
4核 8 GB(通用型) | 4000000 | 16 | 19743 | 743 | 864 |
8核 16 GB(通用型) | 8000000 | 32 | 22750 | 987 | 1809 |
1:4 | 8核 32 GB(通用型) | 16000000 | 32 | 21763 | 1010 | 1907 |
16核 64 GB(通用型) | 32000000 | 128 | 43498 | 2162 | 3696 |
1:8 | 2核 16 GB(独享型) | 8000000 | 8 | 5680 | 1345 | 1930 |
4核 32 GB(独享型) | 16000000 | 16 | 10470 | 1064 | 1971 |
8核 64 GB(独享型) | 32000000 | 32 | 20427 | 790 | 2329 |
16核 128 GB(独享型) | 64000000 | 160 | 29445 | 2944 | 7891 |
r:w=5:95
CPU:Memory | 实例规格 | operationcount | threads | throughput | RAL | WAL |
1:2 | 1核 2 GB(通用型) | 1000000 | 4 | 2431 | 1511 | 1649 |
2核 4 GB(通用型) | 2000000 | 8 | 5336 | 1406 | 1608 |
4核 8 GB(通用型) | 4000000 | 16 | 14496 | 858 | 1110 |
8核 16 GB(通用型) | 8000000 | 32 | 14573 | 958 | 2253 |
1:4 | 8核 32 GB(通用型) | 16000000 | 32 | 13812 | 995 | 2377 |
16核 64 GB(通用型) | 32000000 | 128 | 20663 | 2831 | 6348 |
1:8 | 2核 16 GB(独享型) | 8000000 | 8 | 4079 | 3201 | 8066 |
4核 32 GB(独享型) | 16000000 | 16 | 7154 | 1080 | 2288 |
8核 64 GB(独享型) | 32000000 | 32 | 12585 | 783 | 2626 |
16核 128 GB(独享型) | 64000000 | 160 | 17083 | 4241 | 9615 |
r:w=0:100
CPU:Memory | 实例规格 | operationcount | threads | throughput | RAL | WAL |
1:2 | 1核 2 GB(通用型) | 1000000 | 4 | 2429 | 0 | 1642 |
2核 4 GB(通用型) | 2000000 | 8 | 5238 | 0 | 1643 |
4核 8 GB(通用型) | 4000000 | 16 | 13794 | 0 | 1154 |
8核 16 GB(通用型) | 8000000 | 32 | 14566 | 0 | 2189 |
1:4 | 8核 32 GB(通用型) | 16000000 | 32 | 13485 | 0 | 2361 |
16核 64 GB(通用型) | 32000000 | 128 | 19758 | 0 | 6461 |
1:8 | 2核 16 GB(独享型) | 8000000 | 8 | 3939 | 0 | 8097 |
4核 32 GB(独享型) | 16000000 | 16 | 6940 | 0 | 2298 |
8核 64 GB(独享型) | 32000000 | 32 | 12567 | 0 | 2539 |
16核 128 GB(独享型) | 64000000 | 160 | 16325 | 0 | 9770 |
云盘架构实例(MongoDB 4.4)
加载测试数据
CPU:Memory | 实例规格 | recordcount | threads | throughput | RAL | WAL |
1:2 | 4核 8 GB(独享型) | 4000000 | 16 | 18235 | 0 | 871 |
8核 16 GB(独享型) | 8000000 | 32 | 35643 | 0 | 891 |
16核 32 GB(独享型) | 16000000 | 64 | 65345 | 0 | 971 |
1:4 | 2核 8 GB(独享型) | 4000000 | 8 | 6613 | 0 | 1202 |
8核 32 GB(独享型) | 16000000 | 64 | 45952 | 0 | 1385 |
16核 64 GB(独享型) | 32000000 | 96 | 61973 | 0 | 1539 |
1:8 | 2核 16 GB(独享型) | 8000000 | 8 | 6224 | 0 | 1280 |
4核 32 GB(独享型) | 16000000 | 16 | 18603 | 0 | 857 |
r:w=100:0
CPU:Memory | 实例规格 | operationcount | threads | throughput | RAL | WAL |
1:2 | 4核 8 GB(独享型) | 4000000 | 16 | 24945 | 634 | 0 |
8核 16 GB(独享型) | 8000000 | 32 | 33270 | 938 | 0 |
16核 32 GB(独享型) | 16000000 | 64 | 55703 | 1136 | 0 |
1:4 | 2核 8 GB(独享型) | 4000000 | 8 | 10989 | 723 | 0 |
8核 32 GB(独享型) | 16000000 | 64 | 36039 | 1740 | 0 |
16核 64 GB(独享型) | 32000000 | 96 | 59960 | 1585 | 0 |
1:8 | 2核 16 GB(独享型) | 8000000 | 8 | 11298 | 703 | 0 |
4核 32 GB(独享型) | 16000000 | 16 | 24306 | 653 | 0 |
r:w=95:5
CPU:Memory | 实例规格 | operatiocount | threads | throughput | RAL | WAL |
1:2 | 4核 8 GB(独享型) | 4000000 | 16 | 22471 | 797 | 1161 |
8核 16 GB(独享型) | 8000000 | 32 | 29543 | 1064 | 1199 |
16核 32 GB(独享型) | 16000000 | 64 | 53466 | 1178 | 1300 |
1:4 | 2核 8 GB(独享型) | 4000000 | 8 | 8986 | 854 | 1480 |
8核 32 GB(独享型) | 16000000 | 64 | 34128 | 1829 | 1970 |
16核 64 GB(独享型) | 32000000 | 96 | 78363 | 1196 | 1420 |
1:8 | 2核 16 GB(独享型) | 8000000 | 8 | 8806 | 867 | 1619 |
4核 32 GB(独享型) | 16000000 | 16 | 20132 | 770 | 1181 |
r:w=50:50
CPU:Memory | 实例规格 | operationcount | threads | throughput | RAL | WAL |
1:2 | 4核 8 GB(独享型) | 4000000 | 16 | 14127 | 1009 | 1238 |
8核 16 GB(独享型) | 8000000 | 32 | 19887 | 1496 | 1670 |
16核 32 GB(独享型) | 16000000 | 64 | 23120 | 2680 | 2819 |
1:4 | 2核 8 GB(独享型) | 4000000 | 8 | 5132 | 1370 | 1735 |
8核 32 GB(独享型) | 16000000 | 64 | 18929 | 2930 | 3615 |
16核 64 GB(独享型) | 32000000 | 96 | 25612 | 3675 | 4363 |
1:8 | 2核 16 GB(独享型) | 8000000 | 8 | 4841 | 1438 | 1855 |
4核 32 GB(独享型) | 16000000 | 16 | 13051 | 1080 | 1356 |
r:w=5:95
CPU:Memory | 实例规格 | operationcount | threads | throughput | RAL | WAL |
1:2 | 4核 8 GB(独享型) | 4000000 | 16 | 10266 | 1141 | 1570 |
8核 16 GB(独享型) | 8000000 | 32 | 13556 | 2141 | 2351 |
16核 32 GB(独享型) | 16000000 | 64 | 14447 | 4295 | 4412 |
1:4 | 2核 8 GB(独享型) | 4000000 | 8 | 4226 | 1591 | 1902 |
8核 32 GB(独享型) | 16000000 | 64 | 12055 | 5109 | 5210 |
16核 64 GB(独享型) | 32000000 | 96 | 15216 | 5877 | 8503 |
1:8 | 2核 16 GB(独享型) | 8000000 | 8 | 3874 | 1792 | 2072 |
4核 32 GB(独享型) | 16000000 | 16 | 10083 | 1106 | 1605 |
r:w=0:100
CPU:Memory | 实例规格 | operationcount | threads | throughput | RAL | WAL |
1:2 | 4核 8 GB(独享型) | 4000000 | 16 | 9960 | 0 | 1592 |
8核 16 GB(独享型) | 8000000 | 32 | 13064 | 0 | 2423 |
16核 32 GB(独享型) | 16000000 | 64 | 13743 | 0 | 4615 |
1:4 | 2核 8 GB(独享型) | 4000000 | 8 | 4287 | 0 | 1860 |
8核 32 GB(独享型) | 16000000 | 64 | 11611 | 0 | 5441 |
16核 64 GB(独享型) | 32000000 | 96 | 14391 | 0 | 8746 |
1:8 | 2核 16 GB(独享型) | 8000000 | 8 | 3854 | 0 | 2067 |
4核 32 GB(独享型) | 16000000 | 16 | 9711 | 0 | 1638 |
性能对比图
CPU:Memory=1:2
实例规格为4核 8 GB:
实例规格为8核 16 GB:
CPU:Memory=1:4
实例规格为8核 32 GB:
实例规格为16核 64 GB:
CPU:Memory=1:8
实例规格为2核 16 GB:
实例规格为4核 32 GB: