JMeter测试MongoDB性能有两种方式,一种是利用JMeter直接进行测试MongoDB,还有一种是写Java代码方式测试MongoDB性能。

第一种方法

1.编写Java代码,内容如下:

package com.test.mongodb;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicLong; import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult; import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.Mongo;
import com.mongodb.MongoOptions;
import com.mongodb.ServerAddress;
import com.mongodb.WriteResult; /**
*
* @author 2014-10-14
* @remark 一次性插入多条数据测试MongoDB的性能
*/ public class TestMongodb extends AbstractJavaSamplerClient { private static Mongo m;
private static DB db;
private static AtomicLong read_key = new AtomicLong(0);
private static FileOutputStream fos;
static {
try {
fos = new FileOutputStream(new File("jmeter_error.log")); MongoOptions options = new MongoOptions();
options.autoConnectRetry = true;
options.connectionsPerHost = 1000;
options.maxWaitTime = 5000;
options.socketTimeout = 0;
options.connectTimeout = 15000;
options.threadsAllowedToBlockForConnectionMultiplier = 5000;
m = new Mongo(new ServerAddress("127.0.0.1", 27017), options);
db = m.getDB("iflashbuy-log");
} catch (Exception e) {
throw new RuntimeException(e);
}
} public Arguments getDefaultParameters() {
Arguments params = new Arguments();
params.addArgument("rw", "w");
return params;
} public SampleResult runTest(JavaSamplerContext context) {
// System.out.println(read_key.getAndIncrement());
SampleResult results = new SampleResult();
//System.out.println(context.getParameter("rw"));
results.sampleStart();
DBCollection coll = db.getCollection("area");
if ("w".equalsIgnoreCase(context.getParameter("rw"))) {
long key = 1;
BasicDBObject doc = new BasicDBObject();
doc.put("_id", UUID.randomUUID());
doc.put("_class", "com.iflashbuy.bi.source.pojo.AreaDataEntity");
doc.put("province", "广东");
doc.put("city", "广州");
doc.put("pv", 35522924);
doc.put("uv", 52556);
doc.put("orderCount", 963);
doc.put("orderTotal", 1548563);
doc.put("entpriseCode", "00540001");
db.requestStart();
WriteResult rs = coll.insert(doc);
try {
if (rs.getError() != null) fos.write(rs.getError().getBytes());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//System.out.println("w error->" + rs.getError());
db.requestDone();
} results.setSuccessful(true);
results.sampleEnd();
return results;
// return null;
} /*
public static void main(String args[]) throws Exception {
Arguments a = new Arguments();
a.addArgument("rw", "w");
final JavaSamplerContext c = new JavaSamplerContext(a);
long start = System.currentTimeMillis();
for (int i = 0; i < 5; i++) {
new Thread() {
public void run() {
TestMongodb t = new TestMongodb();
for (int j = 0; j < 2; j++) {
t.runTest(c);
}
}
}.start();
}
}
*/
}

2.生成jar包,放在Jmeter_HOME/lib/ext文件夹下

3.启动JMeter,新建线程组,Java请求,察看结果树,聚合报告,图形结果

4.执行测试

检查MongoDB已添加成功数据。

第二种方法

1.启动JMeter,新建线程组,设置线程组属性

2.右键添加-MongoDB Source Config

设置属性Server Address List:127.0.0.1

MongoDB Source:jmeterdbsource,如下图设置:

3.右键添加-Sampler-MongoDB Script

 设置属性MongoDB Source:引用MongoDB source config中设置的好的名称,jmeterdbsource

Database Name:数据库名称,iflashbuy-log

Script:脚本

4.右键-监听器-察看结果树

以上两种方式,都可用于测试MongoDB的性能。

小结:学习Jmeter有一阵子了,越来越体会到Jmeter对于Java的支持太强大了.

附:

Mongodb亿级数据量的性能测试 http://www.cnblogs.com/lovecindywang/archive/2011/03/02/1969324.html

JMeter学习(十九)JMeter测试MongoDB的更多相关文章

  1. Koa2学习(九)与mongoDB交互

    Koa2学习(九)与mongoDB交互 数据库下载与安装 windows下载地址:http://dl.mongodb.org/dl/win32/x86_64 linux下载地址:https://www ...

  2. jmeter(十九)调试工具Debug Sampler

    一.Debug Sampler介绍: 使用Jmeter开发脚本时,难免需要调试,这时可以使用Jmeter的Debug Sampler,它有三个选项:JMeter properties,JMeter v ...

  3. JMeter学习笔记——认识JMeter(1)

    拿到一个自动化测试工具,我们第一步就应该了解它能提供我们哪方面的功能(最直接的方法就是从官网获取),接下来就是简单的对这个工具进行“功能测试”了,当然这里的功能测试不是让你找它存在的bug,而是让自己 ...

  4. Jmeter学习一:Jmeter性能测试环境搭建(Windows下)

    最近刚开始接触Jmeter性能测试,现总结环境搭建如下: 一.windows安装JDK步骤与环境变量配置: 1.先将下载的JDK安装到其默认目录:C:\Program Files\Java\jdk1. ...

  5. 强化学习(十九) AlphaGo Zero强化学习原理

    在强化学习(十八) 基于模拟的搜索与蒙特卡罗树搜索(MCTS)中,我们讨论了MCTS的原理和在棋类中的基本应用.这里我们在前一节MCTS的基础上,讨论下DeepMind的AlphaGo Zero强化学 ...

  6. Jmeter学习前提:Jmeter安装

    一.Jmeter下载 1. 前提:已经安装 jdk8+ 1.1 JDK下载 a. 进入jdk8+下载地址:https://www.oracle.com/technetwork/java/javase/ ...

  7. <转>jmeter(十九)HTTP属性管理器

    本博客转载自:http://www.cnblogs.com/imyalost/category/846346.html 个人感觉不错,对jmeter讲解非常详细,担心以后找不到了,所以转发出来,留着慢 ...

  8. 性能测试之Jmeter学习(九)

    本节主要学习:定时器(部分内容引用http://www.cnblogs.com/yangxia-test) Meter也有像LR中的集合点,本节就来介绍下JMeter的集合点如何去实现. JMeter ...

  9. jmeter(十九)HTTP属性管理器

    jmeter是一个开源灵活的接口和性能测试工具,当然也能利用jmeter进行接口自动化测试.在我们利用它进行测试过程中,最常用的sampler大概就是Http Request, 使用这个sampler ...

  10. Jmeter(二十九)_dotnet搭建本地接口服务

    这里使用的服务名为Bookshelf,在github上,自行下载.要运行此服务,需要.Net Core SDK 2.1或更高版本.如果尚未安装,从.Net Core官方网站下载并安装. 在本地克隆项目 ...

随机推荐

  1. Java 上传文件到 SFTP 抛异常 java.lang.NoClassDefFoundError: Could not initialize class sun.security.ec.SunEC 的解决办法

    最近从 Op 那里报来一个问题,说是SFTP上传文件不成功.拿到的 Exception 如下: Caused by: java.lang.NoClassDefFoundError: Could not ...

  2. [TypeScript] JSON对象转TypeScript对象范例

    [TypeScript] JSON对象转TypeScript对象范例 Playground http://tinyurl.com/nv4x9ak Samples class DataTable { p ...

  3. Javascript面向对象编程(三) --- 非构造函数的继承

    一.什么是"非构造函数"的继承? 比如,现在有一个对象,叫做"中国人". var Chinese = { nation:'中国' }; 还有一个对象,叫做&qu ...

  4. js判断用户的浏览器设备是移动端还是pc端

    最近做的一个网站页面中需要根据用户的访问设备的不同来显示不同的页面样式,主要是判断移动设备还是电脑浏览器访问的. 下面给出js判断处理代码,以作参考. <script type="te ...

  5. Hosts文件小结

    今天又遇到Hosts,小结一下: Hosts文件是什么? Hosts文件从表象上来看是一个没有扩展名的系统文件.其基本作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库&qu ...

  6. 数位类统计问题--数位DP

    有一类与数位有关的区间统计问题.这类问题往往具有比较浓厚的数学味道,无法暴力求解,需要在数位上进行递推等操作.这类问题往往需要一些预处理,这就用到了数位DP. 本文地址:http://www.cnbl ...

  7. 【读书笔记】iOS-Objective-C对C的扩展基础知识

    一,Xcode的.m扩展名表示文件含有Objective-C代码,应由Objective-C编译器处理.C编译器处理名称以.c结尾的文件,而C++编译器处理.cpp文件.在Xcode中,所有这些编译工 ...

  8. mac os x使用Git简易入门教程

    具体如下: 1, 首先要了解什么是Git. 简而言之,Git是一个分布式的代码版本管理工具.类似的常用工具还有SVN,CVS. 概念了解参见:http://baike.baidu.com/subvie ...

  9. iOS Technology Overview_Introduction

    关于iOS技术 iOS是运行在iPad,iPhone和iPod touch设备上的操作系统.这个操作系统管理着这些设备的硬件并且提供了实现原生APP所需的技术.这个操作系统也附带许多系统APP,例如P ...

  10. Android地图开发之地图的选择

    做lbs开发差不多快2年了,地图相关的产品也差不多做了3个了,用到过的地图包括google地图.高德地图.百度地图.图吧.Osmdroid,今天总结下,方便大家开发时选择合适的地图. 首先说定位模块选 ...