文档章节

使用YCSB测试Mongodb性能的方法简介

LUIS1983
 LUIS1983
发布于 2017/07/11 15:27
字数 962
阅读 133
收藏 0

https://github.com/brianfrankcooper/YCSB/tree/master/mongodb

curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.5.0/ycsb-0.5.0.tar.gz
tar xfvz ycsb-0.5.0.tar.gz
cd ycsb-0.5.0

YCSB(Yahoo! Cloud Serving Benchmark)是雅虎开源的一款通用的性能测试工具。通过这个工具我们可以对各类NoSQL产品进行相关的性能测试,包括:HBase、Cassandra、Mongodb、Voldemort、Redis等。通过配置workload文件,YCSB可以灵活的模拟不同的测试负载和读写模式,以下为YCSB测试Mongo性能步骤的简单总结。

 

       首先,下载YCSB。在YCSB的github项目下可以查看和下载最新源码和所有Tag版本,目前最新的Tag版本为0.1.4(https://github.com/brianfrankcooper/YCSB/archive/0.1.4.zip)。下载后的ycsb-0.1.4.zip解压缩后即可直接使用,无需编译安装。在解压后的目录下,主要使用的两个目录是bin和workloads,前者包含了ycsb可执行文件,后者包含了工具自带的各类workload文件。

 

       其次,配置YCSB。在使用YCSB对Mongodb进行压力测试前,必须进行一些必要的配置。可以根据测试需要选择workloads目录下的任意已有workload文件,添加待测试的mongo实例信息。这里假定使用workloada文件,且待测试的mongo实例运行在本地的27017端口上,那么相应的配置文件内容如下:

mongodb.url=mongodb://localhost:27017 # 待测试mongo实例的数据库地址

mongodb.database=ycsb # 测试时使用的数据库名称

mongodb.writeConcern=normal # 写入安全性为常规

recordcount=10000000 # 测试数据集的记录条数

operationcount=10000000 # 测试过程中执行的操作总数

workload=com.yahoo.ycsb.workloads.CoreWorkload # workload实现类

readallfields=true # 查询时是否读取记录的所有字段

readproportion=0.5 # 读操作的百分比

updateproportion=0.5 # 更新操作的百分比

scanproportion=0 # 扫描操作的百分比

insertproportion=0 # 插入操作的百分比 

requestdistribution=zipfian # 请求分布模式

 

       再次,运行YCSB。YCSB的运行分为两个阶段:测试数据加载阶段和测试操作执行阶段,前者用来加载测试数据集,后者用来执行正真的测试操作,两个阶段都要使用上面的配置文件。数据加载的执行命令为:./bin/ycsb load mongodb -threads 100 -P workloads/workloada,即根据workloada的配置要求启动100个线程并发加载测试数据,在执行完成后YCSB会打印出类似于下面的数据加载性能统计数据:

[OVERALL], RunTime(ms), 905346.0 # 数据加载所用时间(毫秒)

[OVERALL], Throughput(ops/sec), 11045.500836144412 # 加载操作的吞吐量(ops/sec)

[INSERT], Operations, 10000000 # 执行insert操作的总数

[INSERT], AverageLatency(us), 9024.8155659 # 每次insert操作的平均延时(微秒)

[INSERT], MinLatency(us), 139 # 所有insert操作的最小延时(微秒)

[INSERT], MaxLatency(us), 1022876 # 所有insert操作的最大延时(微秒)

[INSERT], 95thPercentileLatency(ms), 27 # 95%的insert操作延时在27毫秒以内

[INSERT], 99thPercentileLatency(ms), 42 # 99%的insert操作延时在42毫秒以内

[INSERT], Return=0, 10000000 # 成功返回数10000000

[INSERT], 0, 3793117 # 以下insert操作在各个延时时间区域的分布情况

[INSERT], 1, 37171

[INSERT], 2, 8035

[INSERT], 3, 6294

...

[INSERT], 999, 0

[INSERT], >1000, 5

执行压力测试的命令为:./bin/ycsb run mongodb -threads 100 -P workloads/workloada,即根据workloada的配置要求启动100个线程并发执行测试操作,在执行完成后YCSB会打印出类似于下面的性能统计数据,统计项说明可参照上文:

[OVERALL], RunTime(ms), 526774.0

[OVERALL], Throughput(ops/sec), 18983.472988416284

[UPDATE], Operations, 500675

[UPDATE], AverageLatency(us), 6493.521553902232

[UPDATE], MinLatency(us), 147

[UPDATE], MaxLatency(us), 1096742

[UPDATE], 95thPercentileLatency(ms), 18

[UPDATE], 99thPercentileLatency(ms), 62

[UPDATE], Return=0, 500675

[UPDATE], 0, 62719

[UPDATE], 1, 69850

...

[UPDATE], 999, 0

[UPDATE], >1000, 16

[READ], Operations, 9499325

[READ], AverageLatency(us), 5173.494588510236

[READ], MinLatency(us), 87

[READ], MaxLatency(us), 1113170

[READ], 95thPercentileLatency(ms), 17

[READ], 99thPercentileLatency(ms), 54

[READ], Return=0, 9499325

[READ], 0, 3394330

[READ], 1, 1187011

...

[READ], 999, 1

[READ], >1000, 294

本文转载自:

LUIS1983
粉丝 4
博文 72
码字总数 79567
作品 0
深圳
私信 提问
使用YCSB测试mongodb分片集群性能

测试工具 本次测试选取YCSB(Yahoo! Cloud System Benchmark)作为测试客户端工具。YCSB是Yahoo开源的一个nosql测试工具,用来测试比较各种nosql的性能,项目地址:https://github.com/brianf...

Si2
2015/11/12
1K
0
MongoDB 3.0新特性概述

MongoDB 在 2015年3月3日 跳过了 MongoDB 2.8版本,直接在 MongoDB 2.6版本后,发布了MongoDB 3.0版本。 随后在 2015年3月17日 发布了 MongoDB 3.0.1 版本; 在 2015年4月9日发布了 MongoDB ...

xinsir999
2018/05/02
0
0
磊哥评测之数据库:腾讯云MongoDB vs自建

本文由云+社区发表 作者:磊哥 上期文章我们聊到了redis。这期我们来说说另一个网红nosql数据库:MongoDB。有这么一个介绍MongoDB的说法是:MongoDB是非关系数据库当中功能最丰富,最像关系数...

腾讯云加社区
02/26
38
0
MongoDB系列教程(八):GridFS存储详解

MongoDB系列教程(八):GridFS存储详解 GridFS简介 mongoDB的文档以BSON格式存储,支持二进制的数据类型,当我们把二进制格式的数据直接保存到mongoDB的文档中。但是当文件太大时,例如图片...

开元中国2015
2015/07/25
390
0
2018年MongoDB中文社区 上海大会

MongoDB 中文社区联合上海锦木信息技术有限公司共同主办的2018活动系列MongoDB 用户组大会第二站——“MongoDB 助力金融科技”,即将于7月21号在上海举办! 这次的大会大咖云集,内容精彩纷呈...

Mongoing中文社区
2018/07/09
150
0

没有更多内容

加载失败,请刷新页面

加载更多

PhotoShop 色调:理解直方图/RGB通道信息

一、直方图:图表的形式,展示图像像素分布的情况 1.平均值:表示平均亮度 2.标准偏差值:表示亮度值范围内的中间值 3.像素: 表示用于计算直方图的像素总数 4.色阶:显示指针下面的区域亮度...

东方墨天
27分钟前
6
0
wildfly(JBoss AS)应用服务器快速入门

什么是wildfly JBoss AS 从8版本起名为wildfly。Wildfly是一个开源的基于JavaEE的轻量级应用服务器。可以在任何商业应用中免费使用。 WildFly是一个灵活的、轻量的、强大管理能力的应用程序服...

程序新视界
52分钟前
5
0
Java集合类常见面试知识点总结

Java集合类学习总结 这篇总结是基于之前博客内容的一个整理和回顾。 这里先简单地总结一下,更多详细内容请参考我的专栏:深入浅出Java核心技术 https://blog.csdn.net/column/details/21930...

Java技术江湖
55分钟前
6
0
怎么用for循环打出爱心

先上效果图: 这是用*组成的爱心,下面讲讲思路: 首先这个图形可以拆分成三部分:第一部分是上面三行的两个梯形,第二部分是中间三行的长方形,第三部分是最下面的倒三角形。 其实图形拆分好...

INEVITABLE
今天
4
0
用HttpUrlConnection伪造成HttpClient

https://www.jianshu.com/p/27ad06cc39d2

shzwork
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部