1、下载mongo-java-driver驱动

官方驱动:

https://mongodb.github.io/mongo-java-driver/

或者Maven:

https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver

  1. <!-- https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver -->
    <dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.8.2</version>
    </dependency>

把mongo-java-driver-3.8.2.jar放到/usr/local/jmeter/apache-jmeter-5.1.1/lib/ext目录下

rm -rf mongo-java-driver-2.11.3.jar

# 删除/usr/local/jmeter/apache-jmeter-5.1.1/lib目录中旧版本的mongo-java-driver jar包

2、在MongoDB中创建jmeter_test库与blazemeter_tutorial集合

3、编写脚本,采用JSR223 Sampler

名称
mongoHost 192.168.1.111
mongoPort 27017
databaseName jmeter_test
collectionName blazemeter_tutorial

  1. import com.mongodb.client.MongoClients;
  2. import com.mongodb.client.MongoClient;
  3. import com.mongodb.MongoClientSettings;
  4. import com.mongodb.ServerAddress;
  5. import com.mongodb.client.MongoCollection;
  6. import com.mongodb.client.MongoDatabase;
  7.  
  8. import org.bson.Document;
  9.  
  10. import java.util.Arrays;
  11.  
  12. try {
  13. MongoClientSettings settings = MongoClientSettings.builder()
  14. .applyToClusterSettings {builder ->
  15. builder.hosts(Arrays.asList(new ServerAddress(vars.get("mongoHost"),vars.get("mongoPort").toInteger())))}
  16. .build();
  17.  
  18. MongoClient mongoClient = MongoClients.create(settings);
  19.  
  20. MongoDatabase database = mongoClient.getDatabase(vars.get("databaseName"));
  21. MongoCollection<Document> collection = database.getCollection(vars.get("collectionName"));
  22.  
  23. vars.putObject("collection", collection);
  24.  
  25. return "Connected to " + vars.get("collectionName");
  26. }
  27. catch (Exception e) {
  28. SampleResult.setSuccessful(false);
  29. SampleResult.setResponseCode("500");
  30. SampleResult.setResponseMessage("Exception: " + e);
  31. }

  1. import com.mongodb.client.MongoCollection;
  2.  
  3. import org.bson.Document;
  4.  
  5. import java.util.Arrays;
  6.  
  7. try {
  8. MongoCollection<Document> collection = vars.getObject("collection");
  9.  
  10. Document document = new Document("firstName", "Expert")
  11. .append("lastName", "Protocolson")
  12. .append("age", 37)
  13. .append("occupation", "DevOps")
  14. .append("skills", Arrays.asList("System Administration", "Linux"))
  15. .append("adress", new Document("city", "Systemberg")
  16. .append("street", "Data Line")
  17. .append("house", 42));
  18.  
  19. collection.insertOne(document);
  20.  
  21. return "Document inserted";
  22. }
  23. catch (Exception e) {
  24. SampleResult.setSuccessful(false);
  25. SampleResult.setResponseCode("500");
  26. SampleResult.setResponseMessage("Exception: " + e);
  27. }

  1. import com.mongodb.client.MongoCollection;
  2. import static com.mongodb.client.model.Filters.*;
  3.  
  4. import org.bson.Document;
  5. import org.bson.types.ObjectId;
  6.  
  7. try {
  8. MongoCollection<Document> collection = vars.getObject("collection");
  9.  
  10. Document result = collection.find(eq("firstName", "Expert")).first();
  11.  
  12. vars.put("exampleDocumentId", result.get("_id").toString());
  13.  
  14. return "Document with id=" + result.get("_id") + " found";
  15. }
  16. catch (Exception e) {
  17. SampleResult.setSuccessful(false);
  18. SampleResult.setResponseCode("500");
  19. SampleResult.setResponseMessage("Exception: " + e);
  20. }

  1. import com.mongodb.client.MongoCollection;
  2. import static com.mongodb.client.model.Filters.*;
  3. import static com.mongodb.client.model.Updates.*;
  4.  
  5. import org.bson.Document;
  6. import org.bson.types.ObjectId;
  7.  
  8. try {
  9. MongoCollection<Document> collection = vars.getObject("collection");
  10.  
  11. collection.updateOne(
  12. eq("_id", new ObjectId(vars.get("exampleDocumentId"))),
  13. combine(set("occupation", "Project Manager"), set("adress.city", "New Codeshire"), currentDate("lastModified")));
  14.  
  15. return "Document with id=" + vars.get("exampleDocumentId") + " modified";
  16. }
  17. catch (Exception e) {
  18. SampleResult.setSuccessful(false);
  19. SampleResult.setResponseCode("500");
  20. SampleResult.setResponseMessage("Exception: " + e);
  21. }

  1. import com.mongodb.client.MongoCollection;
  2. import static com.mongodb.client.model.Filters.*;
  3.  
  4. import org.bson.Document;
  5.  
  6. try {
  7. MongoCollection<Document> collection = vars.getObject("collection");
  8.  
  9. collection.deleteOne(eq("occupation", "Project Manager"));
  10.  
  11. return "Document deleted";
  12. }
  13. catch (Exception e) {
  14. SampleResult.setSuccessful(false);
  15. SampleResult.setResponseCode("500");
  16. SampleResult.setResponseMessage("Exception: " + e);
  17. }

JMeter压测MongoDB的更多相关文章

  1. jmeter压测app

    使用代理的方式,录制app端脚本,之后用jmeter压测就没啥好说的了 1.电脑端谷歌设置本地代理(端口号为8888) 2.jmeter设置HTTP代理服务器(端口号为8888) 3.手机端wifi设 ...

  2. JMeter压测基础(三)——Mysql数据库

    JMeter压测基础(三)——Mysql数据库 环境准备 mysql驱动 JMeter jdbc配置 JMeter jdbc请求 1.下载mysql驱动:mysql-connector-java.ja ...

  3. jmeter压测参数设定(转)

    jmeter压测参数设定 一.基本公式 线程数 = QPS * time: 注:QPS--每秒完成请求的个数:time--每个请求响应完成平均需要时间: 故QPS * time就是所有请求完成响应所需 ...

  4. jmeter压测、操作数据库、分布式linux下运行、webservice接口测试、charles抓包

    一.jmeter压测 在线程组中设置好,然后添加http请求,t添加聚合报告查看压力测试结果,如图: 一般压测时间10-15分钟,如果是稳定性测试,一般n*12小时,这些并发用户一直在请求. tps: ...

  5. jmeter压测之添加负载机

    jmeter压测基本介绍一般基准测试(基准测试时间一般为5分钟)后压测的时间是10-15分钟: 实施测试之前要拿到测试指标 例如:tps要达到多少响应时间要达到多少并发数要达到多少TPS :服务端每秒 ...

  6. jmeter 压测duobbo接口,施压客户端自己把自己压死了

    jmeter 压测duobbo接口,jmeter代码不合理,导致每执行一次请求,会调用一次消耗内存的实例化.导致越压越慢,请求发不出去.这个时候需要考虑修改代码了. 截图中,tps越来越少. 原来初始 ...

  7. jmeter压测-负载配置

    jmeter 压测 一般压测的时间是10-15分钟 TPS:服务端每秒钟处理的请求数  越大越好 响应时间 :越短越好 并发用户数  也就是多少并发 指标给你:tps要达到多少 响应时间要达到多少 并 ...

  8. JMeter压测“java.net.BindException: Address already in use: connect”解决方法

    之前在windows机上用JMeter压测,50并发下出现大量接口报“java.net.BindException: Address already in use: connect”错误. 从字面的意 ...

  9. jmeter压测学习1-window环境准备与案例

    前言 最近用jmeter做一些接口的压力测试,记录下使用过程中遇到的一些问题. 在使用window机器做并发压测的时候,发现并发数设置100的时候,会出现报错:java.net.SocketExcep ...

随机推荐

  1. KVM管理工具webvirtmgr的使用

    WebVirtMgr的日常配置:添加宿主机,创建虚拟机,磁盘扩容,快照等具体操作记录如下: 一.创建虚拟机 1.创建存储池 点击创建的宿主机,进入虚拟机部署界面 点击“存储池”按钮,创建存储池(即创建 ...

  2. 解释为什么wait()和notify(), notifyAll()要放在同步块中

    首先,wait()是释放锁的,因此wait()之前要先获得锁,而锁在同步块开始的时候获得,结束时释放,即同步块内为持有锁的阶段. 那为什么要设计同步块呢?或者说没有同步块会怎样呢?

  3. 普通键盘Windows上虚拟Cherry机械键盘效果的方法

    草台班子--普通键盘Windows上虚拟Cherry机械键盘效果的方法    ​ 机械键盘以其独特的手感.绚丽的外形,还有那人神共愤的音效吸引着大批爱好者.最近iQQO 3的机械键盘效果更是吸引了更多 ...

  4. Tomcat 核心配置

    tomcat的核心配置在conf/server.xml中. <Server>   根元素 <Server>即Catalina Servlet组件. <Server por ...

  5. Learning hard 学习笔记

    第一章 你真的了解C#吗 1.什么是C#, 微软公司,面向对象,运行于.NET Framework之上, 2.C#能编写哪些应用程序, Windows应用桌面程序,Web应用程序,Web服务, 3.什 ...

  6. java Reflection(反射)基础知识讲解

    原文链接:小ben马的java Reflection(反射)基础知识讲解 1.获取Class对象的方式 1.1)使用 "Class#forName" public static C ...

  7. SynchronizationContext(同步上下文)综述

    >>返回<C# 并发编程> 1. 概述 2. 同步上下文 的必要性 2.1. ISynchronizeInvoke 的诞生 2.2. SynchronizationContex ...

  8. Java基础之三、类的特性和接口

    类的派生.多态.抽象类.接口 1:派生-extends 派生就是继承已有类非私有的字段和方法等创建新的类,还可以添加.重写字段和方法: 在类的派生中,构造函数不可以被继承: 派生源的类-父类/基类/超 ...

  9. Linux /etc/network/interfaces

    Linux下/etc/network/interfaces文件用来配置网络接口. 1. 使用动态IP地址 auto eth0 iface eth0 inet dhcp 2. 使用静态IP地址 auto ...

  10. shell中expect免交互

    expect前言观察ssh登录的交互现象有些程序难以避免的需要交互.你该如何解决脚本与程序的交互问题?名词解释期待, 预期, 盼望, 预料,料想, 指望, 希望, 要求,想, 认为一.概述 我们通过S ...