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

最新文章

  1. ssh项目将搜索条件进行联动
  2. node 异步编程
  3. EF 知识点
  4. 出现segment fault 错误的几种原因
  5. ofbiz进击 第一节。 新建自己的webapp项目
  6. UICollectionViewLayout
  7. iOS开发——真机调试证书—发布证书
  8. 01.Editplus+Lua配置
  9. 如何在WP8模拟器中连接本地的web服务
  10. UML学习-活动图创建
  11. Map.containsKey方法——判断Map集合对象中是否包含指定的键名
  12. 利用arcgis和envi对卫星图像按城市进行拼接,分割
  13. Kong(V1.0.2) Securing the Admin API
  14. SQLite中的FROM子句
  15. Linux 下配置Tomcat的虚拟路径
  16. kali linux DIY
  17. ibatis Order By注入问题
  18. c# throw抛出上一个异常
  19. 通过PDO 连接SQL Server
  20. Line---CodeForces 7C(扩展欧几里得算法)

热门文章

  1. react与redux学习资料的整理
  2. SharePoint 2013 Workflow 分布式配置问题记录
  3. jQuery Mobile笔记
  4. php对mysql数据库简单连接操作
  5. Microsoft SQL Server,附加数据库 错误:Error 916解决方法
  6. Android ListView用EditText实现搜索功能
  7. 自增build ID配置
  8. iOS支付宝集成时遇到的问题整理(1)
  9. 用luke看索引
  10. 《SQL Server企业级平台管理实践》读书笔记——SQL Server数据库文件分配方式