云数据库 MongoDB 测试方法

这篇说说使用YCSB对腾讯云数据库MongoDB进行性能测试的完整过程,涵盖2核4GB等规格的吞吐量和时延指标,并详述了从CVM连接、数据加载到多种读写比例压测的步骤。 测试场景:包括50%读+50%更新、95%读+5%更新、100%插入等六种组合。 测试步骤:远程连接CVM下载YCSB,加载基础数据后运行压测脚本,最后获取结果。

相关产品
云数据库 MongoDB 产品页,含版本规格、价格与购买入口。

这篇说说应用 YCSB 对腾讯云数据库 MongoDB 进行性能测试的完整过程。

一、测试目标

注意:说明:

注意:MongoDB 数据结构灵活,使用场景复杂多变,很难覆盖到所有场景,最终性能表现建议根据业务实际模型进行测试。

·对不同规格的 MongoDB 实例进行性能测试,包含2核4GB、4核8GB、6核16GB等。测试性能指标主要包含 throughput(ops/sec)每秒操作数、RAL(us) 平均读时延、WAL(us) 平均写时延等。

·每一种实例规格测试场景如下所示:

·50% read + 50% update:读更新比例依次为50%与50%。

·95% read + 5% update:读更新比例依次为95%和5%。

·5% read + 95% update:读更新比例依次为5%和95%。

·100% insert:仅写入数据。

·100% read:仅读取数据。

·100% update:仅更新数据。

二、步骤1:远程连接 CVM 实例,下载 YCSB 工具。

1. 使用标准登录方式登录 CVM 实例。具体操作,请参见 登录服务器。

2. 在 CVM 上进行 YCSB 下载。

三、步骤2:加载基础测试数据至 MongoDB 数据库

使用 nohup 命令,在后台运行 YCSB 工具,使用配置文件 workloada,连接到指定的 MongoDB 集群,以同步模式加载数据到 test 集合中,并将输出记录到 loadlog.txt 文件中。具体参数解释如下所示。

执行命令分解 解释说明
nohup Linux 命令通常用于运行需要长时间执行的后台进程,确保这些进程不会因为用户的注销或终端的关闭而中断。
./ycsb-0.17.0/bin/ycsb YCSB 可执行文件路径。
load YCSB 的子命令,用于加载数据到数据库。
mongodb 指定要加载的数据库类型 MongoDB。
-s 指定同步模式,即加载操作将在所有操作完成后才返回。
-P workloads/workloada 指定要使用的 YCSB 工作负载配置文件,此处为 workloada。
-p mongodb.url=mongodb://mongouser:password@10.xx.xx.30:27017,10.xx.xx.28:27017,10.xx.xx.5:27017/admin?w=0 指定 MongoDB 的连接 URL 地址。连接字符串包括用户名、密码、服务器地址和端口号。w = 0表示写操作不需要确认,即不需要等待写操作的响应。
-p table=test 指定在 MongoDB 中使用的集合名称为 test。
-threads 300 指定用于执行加载操作的线程数量,该示例为300。每一种实例规格对应测试的执行线程数不同。具体信息,请参见 测试结果。
-p recordcount=10000000 指定要加载的记录总数。该示例为 1000 万条。每一种实例规格对应测试的数据记录总数不同,具体信息,请参见 测试结果。
>loadlog.txt & 将命令的输出重定向到 loadlog.txt 文件,并且使用 & 将命令放入后台执行。

nohup ./ycsb-0.17.0/bin/ycsb load mongodb -s -P workloads/workloada-p mongodb.url=mongodb://mongouser:password@10.xx.xx.30:27017,10.xx.xx.28:27017,10.xx.xx.5:27017/admin?w=0 -p table=test -threads 300 -p recordcount=10000000>loadlog.txt &

四、50%update+50%read

执行总共10,000,000次操作,其中50%为读取操作,50%为更新操作,不执行插入操作。在100个线程中并行执行,并将输出记录到 runlog.txt 文件中。其中,关键配置参数如下:

·-p table=test: 指定在MongoDB中使用的集合名称。

·-p recordcount=10000000: 指定数据库中记录的总数。

·-p readproportion=0.5: 指定读取操作所占的比例,此处为50%。

·-p updateproportion=0.5: 指定更新操作所占的比例,此处为50%。

·-p insertproportion=0: 指定插入操作所占的比例,此处为0%,即不执行插入操作。

·-p operationcount=100000: 指定要执行的操作总数。

·-threads 100: 指定用于执行操作的线程数量。

·>runlog.txt &: 将命令的输出重定向到 runlog.txt 文件,并且使用&将命令放入后台执行。

注意:说明:

nohup ./ycsb-0.17.0/bin/ycsb run mongodb -s -P workloads/workloada -p mongodb.url=mongodb://mongouser: password @10.xx.xx.30:27017,10.xx.xx.28:27017,10.xx.xx.5:27017/admin?w=0 -p table=test -p recordcount=10000000 -p readproportion=0.5 -p updateproportion=0.5 -p insertproportion=0 -p operationcount=10000000 -threads 100 >runlog.txt &

五、95% update + 5% read

执行总共10,000,000次操作,其中95%为更新操作,5%为读取操作,不执行插入操作。在100个线程中并行执行,并将输出记录到 runlog.txt 文件中。

nohup ./ycsb-0.17.0/bin/ycsb run mongodb -s -P workloads/workloada -p mongodb.url=mongodb://mongouser: password @10.xx.xx.30:27017,10.xx.xx.28:27017,10.xx.xx.5:27017/admin?w=0 -p table=test -p recordcount=10000000 -p readproportion=0.05 -p updateproportion=0.95 -p insertproportion=0 -p operationcount=10000000 -threads 100 >runlog.txt &

六、5%update + 95%read

执行总共10,000,000次操作,其中5%为更新操作,95%为读取操作,不执行插入操作。在100个线程中并行执行,并将输出记录到 runlog.txt 文件中。

nohup ./ycsb-0.17.0/bin/ycsb run mongodb -s -P workloads/workloada -p mongodb.url=mongodb://mongouser: password @10.xx.xx.30:27017,10.xx.xx.28:27017,10.xx.xx.5:27017/admin?w=0 -p table=test -p recordcount=10000000 -p readproportion=0.95 -p updateproportion=0.05 -p insertproportion=0 -p operationcount=10000000 -threads 100 >runlog.txt &

七、100%insert

执行总共10,000,000次操作,100%插入操作,在100个线程中并行执行,并将输出记录到 runlog.txt 文件中。

nohup ./ycsb-0.17.0/bin/ycsb run mongodb -s -P workloads/workloadb -p mongodb.url=mongodb://mongouser: password @10.xx.xx.30:27017,10.xx.xx.28:27017,10.xx.xx.5:27017/admin?w=0 -p table=test -p recordcount=10000000 -p readproportion=0 -p updateproportion=0 -p insertproportion=1 -p operationcount=10000000 -threads 100 >runlog.txt &

八、100% read

执行总共10,000,000次操作,100%读操作,在100个线程中并行执行,并将输出记录到 runlog.txt 文件中。

nohup ./ycsb-0.17.0/bin/ycsb run mongodb -s -P workloads/workloadc -p mongodb.url=mongodb://mongouser: password @10.xx.xx.30:27017,10.xx.xx.28:27017,10.xx.xx.5:27017/admin?w=0 -p table=test -p recordcount=10000000 -p readproportion=1 -p updateproportion=0 -p insertproportion=0 -p operationcount=10000000 -threads 100 >runlog.txt &

九、100% update

执行总共10,000,000次操作,100% Update 操作,在100个线程中并行执行,并将输出记录到 runlog.txt 文件中。

nohup ./ycsb-0.17.0/bin/ycsb run mongodb -s -P workloads/workloadb -p mongodb.url=mongodb://mongouser: password @10.xx.xx.30:27017,10.xx.xx.28:27017,10.xx.xx.5:27017/admin?w=0 -p table=test -p recordcount=10000000 -p readproportion=0 -p updateproportion=1 -p insertproportion=0 -p operationcount=10000000 -threads 100 >runlog.txt &

十、步骤4:获取测试数据

腾讯云 MongoDB 测试了 4.0、4.4版本,云盘版与物理版,不同实例规格的性能数据,具体测试结果,请参见 测试结果。

赞 (0)
上一篇 4天前
下一篇 4天前