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      #是否只读测试



测试结果:


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

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



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

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



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这个错误可能是因为你的 Ubuntu 软件源中没有包含 `sysbench-mysql` 包。你可以尝试更新软件源并重新安装 `sysbench-mysql`: ``` sudo apt-get update sudo apt-get install sysbench-mysql ``` 如果更新软件源后还是无法安装,你可以尝试添加第三方软件源或者手动编译安装 `sysbench` 和 `sysbench-mysql`。如果你需要手动编译安装,请先卸载已经安装的 `sysbench`: ``` sudo apt-get remove sysbench ``` 然后按照以下步骤编译安装: 1. 下载 `sysbench` 和 `sysbench-mysql` 的源码包: ``` wget https://github.com/akopytov/sysbench/archive/1.0.20.tar.gz wget https://github.com/akopytov/sysbench/archive/1.0.20.tar.gz ``` 2. 解压源码包: ``` tar -zxvf sysbench-1.0.20.tar.gz tar -zxvf sysbench-mysql-1.0.20.tar.gz ``` 3. 安装编译工具和依赖库: ``` sudo apt-get install build-essential automake libtool pkg-config libaio-dev ``` 4. 编译安装 `sysbench`: ``` cd sysbench-1.0.20/ ./autogen.sh ./configure make sudo make install ``` 5. 编译安装 `sysbench-mysql`: ``` cd ../sysbench-mysql-1.0.20/ ./autogen.sh ./configure --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib/x86_64-linux-gnu/ make sudo make install ``` 6. 安装完成后,你可以使用以下命令测试 `tpcc`: ``` sysbench --mysql-host=<db-host> --mysql-port=<db-port> --mysql-user=<db-user> --mysql-password=<db-password> --mysql-db=<db-name> --time=<test-time> --threads=<num-threads> --report-interval=<report-interval> /usr/share/sysbench/tpcc.lua --tables=<num-tables> --scale=<tpcc-scale> ``` 其中 `<db-host>`、`<db-port>`、`<db-user>`、`<db-password>` 和 `<db-name>` 分别是你的数据库连接信息,`<test-time>` 是测试时间,`<num-threads>` 是测试线程数,`<report-interval>` 是测试报告输出间隔,`<num-tables>` 是 tpcc 测试中使用的表的数量,`<tpcc-scale>` 是 tpcc 测试的规模。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值