JMeter压测MongoDB
1、下载mongo-java-driver驱动
官方驱动:
https://mongodb.github.io/mongo-java-driver/
或者Maven:
https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver
- <!-- 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 |
- import com.mongodb.client.MongoClients;
- import com.mongodb.client.MongoClient;
- import com.mongodb.MongoClientSettings;
- import com.mongodb.ServerAddress;
- import com.mongodb.client.MongoCollection;
- import com.mongodb.client.MongoDatabase;
- import org.bson.Document;
- import java.util.Arrays;
- try {
- MongoClientSettings settings = MongoClientSettings.builder()
- .applyToClusterSettings {builder ->
- builder.hosts(Arrays.asList(new ServerAddress(vars.get("mongoHost"),vars.get("mongoPort").toInteger())))}
- .build();
- MongoClient mongoClient = MongoClients.create(settings);
- MongoDatabase database = mongoClient.getDatabase(vars.get("databaseName"));
- MongoCollection<Document> collection = database.getCollection(vars.get("collectionName"));
- vars.putObject("collection", collection);
- return "Connected to " + vars.get("collectionName");
- }
- catch (Exception e) {
- SampleResult.setSuccessful(false);
- SampleResult.setResponseCode("500");
- SampleResult.setResponseMessage("Exception: " + e);
- }
- import com.mongodb.client.MongoCollection;
- import org.bson.Document;
- import java.util.Arrays;
- try {
- MongoCollection<Document> collection = vars.getObject("collection");
- Document document = new Document("firstName", "Expert")
- .append("lastName", "Protocolson")
- .append("age", 37)
- .append("occupation", "DevOps")
- .append("skills", Arrays.asList("System Administration", "Linux"))
- .append("adress", new Document("city", "Systemberg")
- .append("street", "Data Line")
- .append("house", 42));
- collection.insertOne(document);
- return "Document inserted";
- }
- catch (Exception e) {
- SampleResult.setSuccessful(false);
- SampleResult.setResponseCode("500");
- SampleResult.setResponseMessage("Exception: " + e);
- }
- import com.mongodb.client.MongoCollection;
- import static com.mongodb.client.model.Filters.*;
- import org.bson.Document;
- import org.bson.types.ObjectId;
- try {
- MongoCollection<Document> collection = vars.getObject("collection");
- Document result = collection.find(eq("firstName", "Expert")).first();
- vars.put("exampleDocumentId", result.get("_id").toString());
- return "Document with id=" + result.get("_id") + " found";
- }
- catch (Exception e) {
- SampleResult.setSuccessful(false);
- SampleResult.setResponseCode("500");
- SampleResult.setResponseMessage("Exception: " + e);
- }
- import com.mongodb.client.MongoCollection;
- import static com.mongodb.client.model.Filters.*;
- import static com.mongodb.client.model.Updates.*;
- import org.bson.Document;
- import org.bson.types.ObjectId;
- try {
- MongoCollection<Document> collection = vars.getObject("collection");
- collection.updateOne(
- eq("_id", new ObjectId(vars.get("exampleDocumentId"))),
- combine(set("occupation", "Project Manager"), set("adress.city", "New Codeshire"), currentDate("lastModified")));
- return "Document with id=" + vars.get("exampleDocumentId") + " modified";
- }
- catch (Exception e) {
- SampleResult.setSuccessful(false);
- SampleResult.setResponseCode("500");
- SampleResult.setResponseMessage("Exception: " + e);
- }
- import com.mongodb.client.MongoCollection;
- import static com.mongodb.client.model.Filters.*;
- import org.bson.Document;
- try {
- MongoCollection<Document> collection = vars.getObject("collection");
- collection.deleteOne(eq("occupation", "Project Manager"));
- return "Document deleted";
- }
- catch (Exception e) {
- SampleResult.setSuccessful(false);
- SampleResult.setResponseCode("500");
- SampleResult.setResponseMessage("Exception: " + e);
- }
JMeter压测MongoDB的更多相关文章
- jmeter压测app
使用代理的方式,录制app端脚本,之后用jmeter压测就没啥好说的了 1.电脑端谷歌设置本地代理(端口号为8888) 2.jmeter设置HTTP代理服务器(端口号为8888) 3.手机端wifi设 ...
- JMeter压测基础(三)——Mysql数据库
JMeter压测基础(三)——Mysql数据库 环境准备 mysql驱动 JMeter jdbc配置 JMeter jdbc请求 1.下载mysql驱动:mysql-connector-java.ja ...
- jmeter压测参数设定(转)
jmeter压测参数设定 一.基本公式 线程数 = QPS * time: 注:QPS--每秒完成请求的个数:time--每个请求响应完成平均需要时间: 故QPS * time就是所有请求完成响应所需 ...
- jmeter压测、操作数据库、分布式linux下运行、webservice接口测试、charles抓包
一.jmeter压测 在线程组中设置好,然后添加http请求,t添加聚合报告查看压力测试结果,如图: 一般压测时间10-15分钟,如果是稳定性测试,一般n*12小时,这些并发用户一直在请求. tps: ...
- jmeter压测之添加负载机
jmeter压测基本介绍一般基准测试(基准测试时间一般为5分钟)后压测的时间是10-15分钟: 实施测试之前要拿到测试指标 例如:tps要达到多少响应时间要达到多少并发数要达到多少TPS :服务端每秒 ...
- jmeter 压测duobbo接口,施压客户端自己把自己压死了
jmeter 压测duobbo接口,jmeter代码不合理,导致每执行一次请求,会调用一次消耗内存的实例化.导致越压越慢,请求发不出去.这个时候需要考虑修改代码了. 截图中,tps越来越少. 原来初始 ...
- jmeter压测-负载配置
jmeter 压测 一般压测的时间是10-15分钟 TPS:服务端每秒钟处理的请求数 越大越好 响应时间 :越短越好 并发用户数 也就是多少并发 指标给你:tps要达到多少 响应时间要达到多少 并 ...
- JMeter压测“java.net.BindException: Address already in use: connect”解决方法
之前在windows机上用JMeter压测,50并发下出现大量接口报“java.net.BindException: Address already in use: connect”错误. 从字面的意 ...
- jmeter压测学习1-window环境准备与案例
前言 最近用jmeter做一些接口的压力测试,记录下使用过程中遇到的一些问题. 在使用window机器做并发压测的时候,发现并发数设置100的时候,会出现报错:java.net.SocketExcep ...
随机推荐
- KVM管理工具webvirtmgr的使用
WebVirtMgr的日常配置:添加宿主机,创建虚拟机,磁盘扩容,快照等具体操作记录如下: 一.创建虚拟机 1.创建存储池 点击创建的宿主机,进入虚拟机部署界面 点击“存储池”按钮,创建存储池(即创建 ...
- 解释为什么wait()和notify(), notifyAll()要放在同步块中
首先,wait()是释放锁的,因此wait()之前要先获得锁,而锁在同步块开始的时候获得,结束时释放,即同步块内为持有锁的阶段. 那为什么要设计同步块呢?或者说没有同步块会怎样呢?
- 普通键盘Windows上虚拟Cherry机械键盘效果的方法
草台班子--普通键盘Windows上虚拟Cherry机械键盘效果的方法 机械键盘以其独特的手感.绚丽的外形,还有那人神共愤的音效吸引着大批爱好者.最近iQQO 3的机械键盘效果更是吸引了更多 ...
- Tomcat 核心配置
tomcat的核心配置在conf/server.xml中. <Server> 根元素 <Server>即Catalina Servlet组件. <Server por ...
- Learning hard 学习笔记
第一章 你真的了解C#吗 1.什么是C#, 微软公司,面向对象,运行于.NET Framework之上, 2.C#能编写哪些应用程序, Windows应用桌面程序,Web应用程序,Web服务, 3.什 ...
- java Reflection(反射)基础知识讲解
原文链接:小ben马的java Reflection(反射)基础知识讲解 1.获取Class对象的方式 1.1)使用 "Class#forName" public static C ...
- SynchronizationContext(同步上下文)综述
>>返回<C# 并发编程> 1. 概述 2. 同步上下文 的必要性 2.1. ISynchronizeInvoke 的诞生 2.2. SynchronizationContex ...
- Java基础之三、类的特性和接口
类的派生.多态.抽象类.接口 1:派生-extends 派生就是继承已有类非私有的字段和方法等创建新的类,还可以添加.重写字段和方法: 在类的派生中,构造函数不可以被继承: 派生源的类-父类/基类/超 ...
- Linux /etc/network/interfaces
Linux下/etc/network/interfaces文件用来配置网络接口. 1. 使用动态IP地址 auto eth0 iface eth0 inet dhcp 2. 使用静态IP地址 auto ...
- shell中expect免交互
expect前言观察ssh登录的交互现象有些程序难以避免的需要交互.你该如何解决脚本与程序的交互问题?名词解释期待, 预期, 盼望, 预料,料想, 指望, 希望, 要求,想, 认为一.概述 我们通过S ...