JMeter学习(十九)JMeter测试MongoDB
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的更多相关文章
- Koa2学习(九)与mongoDB交互
Koa2学习(九)与mongoDB交互 数据库下载与安装 windows下载地址:http://dl.mongodb.org/dl/win32/x86_64 linux下载地址:https://www ...
- jmeter(十九)调试工具Debug Sampler
一.Debug Sampler介绍: 使用Jmeter开发脚本时,难免需要调试,这时可以使用Jmeter的Debug Sampler,它有三个选项:JMeter properties,JMeter v ...
- JMeter学习笔记——认识JMeter(1)
拿到一个自动化测试工具,我们第一步就应该了解它能提供我们哪方面的功能(最直接的方法就是从官网获取),接下来就是简单的对这个工具进行“功能测试”了,当然这里的功能测试不是让你找它存在的bug,而是让自己 ...
- Jmeter学习一:Jmeter性能测试环境搭建(Windows下)
最近刚开始接触Jmeter性能测试,现总结环境搭建如下: 一.windows安装JDK步骤与环境变量配置: 1.先将下载的JDK安装到其默认目录:C:\Program Files\Java\jdk1. ...
- 强化学习(十九) AlphaGo Zero强化学习原理
在强化学习(十八) 基于模拟的搜索与蒙特卡罗树搜索(MCTS)中,我们讨论了MCTS的原理和在棋类中的基本应用.这里我们在前一节MCTS的基础上,讨论下DeepMind的AlphaGo Zero强化学 ...
- Jmeter学习前提:Jmeter安装
一.Jmeter下载 1. 前提:已经安装 jdk8+ 1.1 JDK下载 a. 进入jdk8+下载地址:https://www.oracle.com/technetwork/java/javase/ ...
- <转>jmeter(十九)HTTP属性管理器
本博客转载自:http://www.cnblogs.com/imyalost/category/846346.html 个人感觉不错,对jmeter讲解非常详细,担心以后找不到了,所以转发出来,留着慢 ...
- 性能测试之Jmeter学习(九)
本节主要学习:定时器(部分内容引用http://www.cnblogs.com/yangxia-test) Meter也有像LR中的集合点,本节就来介绍下JMeter的集合点如何去实现. JMeter ...
- jmeter(十九)HTTP属性管理器
jmeter是一个开源灵活的接口和性能测试工具,当然也能利用jmeter进行接口自动化测试.在我们利用它进行测试过程中,最常用的sampler大概就是Http Request, 使用这个sampler ...
- Jmeter(二十九)_dotnet搭建本地接口服务
这里使用的服务名为Bookshelf,在github上,自行下载.要运行此服务,需要.Net Core SDK 2.1或更高版本.如果尚未安装,从.Net Core官方网站下载并安装. 在本地克隆项目 ...
随机推荐
- 基于UML项目的分析与设计
1,概述 项目中需求和设计的文档是必然的,UML工具可以帮助指导我们从不同的角度去看待一个新的系统,并把这个系统分解剖析出来.本篇文章主要讲述的是如何将UML应用到项目的开发工作中,关于如何学习UML ...
- jQuery Flipping Gallery 翻转画廊
在线实例 简单配置 翻转方向 鼠标滚动 自动播放 绑定事件 使用方法 <div class="main"> <div class="page_conta ...
- Javascript的封装
js的封装分为以下几种模式: 工厂模式,代码如下: <!doctype html><html lang="en"><head><meta ...
- SVG描边动画原理
SVG描边动画原理其实很简单,主要利用以下两个属性 stroke-dasharray 制作虚线,使得黑白相间, stroke-dashoffset 使得虚线向开头偏移,这里的1500不精确,是我随便取 ...
- Purchase购物车实例分析
源代码下载地址:http://code4app.com/ios/55655def933bf09d328b5141 此源代码从中学到以下四个知识点 第一:关于右边只有一个被选中的效果展现,左边部分代码内 ...
- 【读书笔记】iOS网络-HTTP-URL百分号编码
代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, ty ...
- CocoaPods 添加第三方库报错
1.终端报错:The dependency MBProgressHUD (~> 0.9.2) is not used in any concrete target.2.原因:CocoaPods升 ...
- IOS 网络浅析-(十三 SDWebImage 实用技巧)
IOS 网络浅析-(十三 SDWebImage 实用技巧) 首先让我描述一下为了什么而产生的实用技巧.(在TableView.CollectionView中)当用户所处环境WiFi网速不够快(不能立即 ...
- iOS 学习 - 7.限制 TextField 输入字符长度
#pragma mark -- TextField代理 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange: ...
- 读取本地Json文件
//读取Json文件 地区 //将文件拖到本地 获取json数据 //获取json文件路径 NSString *pathArea=[[NSBundle mainBundle] pathForRes ...