Sysbench-Mongodb

Sysbench-Mongodb与sysbench mysql类似,可用于做压力测试

作者介绍:http://www.tokutek.com/2013/03/sysbench-benchmark-for-mongodb/


安装及运行步骤如下

1、下载解压 https://github.com/tmcallaghan/sysbench-mongodb

wget https://codeload.github.com/tmcallaghan/sysbench-mongodb/zip/master -O sysbench-mongodb-master.zip

unzip sysbench-mongodb-master.zip


2、运行需要jdk,安装JDK 1.7 

下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

wget --no-cookies \

--no-check-certificate \

--header "Cookie: oraclelicense=accept-securebackup-cookie" \

"http://download.oracle.com/otn-pub/java/jdk/7u55-b13/jdk-7u55-linux-x64.rpm" \

-O jdk-7u55-linux-x64.rpm

#chmod +x jdk-7u 5 5-linux-x64.rpm
#rpm -ivh jdk-7u 5 5-linux-x64.rpm
安装完毕,配置环境变量,编辑/etc/profile文件,在文件中找到export PATH USER LOGNAME 等内容,添加以下内容:  
JAVA_HOME=/usr/java/jdk1.7.0_45
JRE_HOME=/usr/java/jdk1.7.0_45/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL JAVA_HOME JRE_HOME CLASSPATH

保存退出,执行:
#source /etc/profile

3、 下载mongo-java-driver 驱动包

wget http://central.maven.org/maven2/org/mongodb/mongo-java-driver/2.11.4/mongo-java-driver-2.11.4.jar

配置环境变量:

export CLASSPATH=$PWD/mongo-java-driver-2.11.4.jar:$CLASSPATH

4、执行测试脚本文件

cd sysbench-mongodb-master 

./run.simple.bash



测试脚本主要分成load data和workload两个步骤:

1、Load data部分,我们可以修改collection数量和document数量

    • 它默认是生成16个collection,名字为sbtest1...sbtest16,每个collection有1千万documents
    • 每个collection的"K"列上创建有二级索引
    • documents的结构如下:
      {
      "_id" : 1 … 10000000
      "k"   : random integer between 1 and 10000000
      "c"   : 10 segments of 11 random digits plus hyphen
              (119 characters total)
      "pad" : 5 segments of 11 random digits plus hyphen
              (59 characters total)
      }

具体如下所示:

> db.sbtest1.find().limit(1)

{

"_id" : 1, 

"k" : 548986, 

"c" : "87344468893-73242269620-94983725406-35905450777-20807236565-89440163868-45896582721-17821859959-07640351160-42454483377", 

"pad" : "01376750983-06661949810-55641668812-30952342371-57477967936" 

}


2、负载测试步骤,一个"事务"包含以下操作:

每个客户端线程随机选择一个集合来执行以下所有操作,所有的操作都是通过_id键,范围操作是连续的:

10个随机查询"C" 列

1个100个文档的范围查询“C”列 

使用聚合框架在100个文档的范围sum(“K”) 

1个100个文档的范围排序"C"列 

1个100个文档的范围查找distinct “C” 列

随机更新1个文档的属性“K”(有索引) 

随机更新1个文档的属性“C”(无索引) 

通过_id随机删除1个文档,然后使用相同的_id插入新文档


具体的一些参数可以直接修改run.simple.bash脚本,基本上能猜出具体的作用,如:

NUM_COLLECTIONS=8      #集合数量
NUM_DOCUMENTS_PER_COLLECTION=1000000      #每集合的文档数量
NUM_DOCUMENTS_PER_INSERT=1000      #每次Insert多少个文档
NUM_LOADER_THREADS=8      #Loaddata时的进程数量
RUN_TIME_MINUTES=10      #负载测试运行多少分钟
NUM_SECONDS_PER_FEEDBACK=10      #每次输出的间隔秒数
MONGO_SERVER=localhost      #mongodb服务器
MONGO_PORT=27017      #mongodb端口号

SYSBENCH_READ_ONLY=N      #是否只读测试



测试结果:

Sysbench-Mongodb_第1张图片

cum ips: 是总体的平均每秒insert数量 ,也就是总inserts/秒数

int ips :增量平均每秒insert数量,也就是本次10秒内的平均每秒insert数量



cum tps: 是总体的平均每秒事务数量 ,也就是总事务/秒数

int ips :增量的平均每秒事务数量,也就是本次10秒内的平均每秒事务数量



你可能感兴趣的:(Sysbench-Mongodb)