使用Jmeter对MongoDB进行压测
1.介绍
2.使用groovy编写MongoDB查询操作代码 进行压测
3.通过BeanShell取样器去执行本地的Python脚本
4.资源地址
1.介绍
- 1.需求介绍:
- 通过MongoDB的key进行查询操作的压测
- 2.压测方法:
- 方法1(推荐):
- 通过 JSR223取样器 中的groovy语言去编写代码,编写MongoDB查询操作
- 方法2:
- 通过 BeanShell 取样器 去执行 本地的Python脚本
- Python脚本里面写有MongoDB查询操作
- 执行完Python脚本,如果Jmeter想要知道执行结果,可以获取脚本的内容,然后把获取到的内容存储起来
- 使用JSR223 Sampler 把结果输出到查看结果树中
- 方法3 (不推荐):
- 使用JSR223取样器 中的python语言去执行MongoDB查询操作
(只能使用python2.7语法,没有python3.x的jar包,因为python2.X版本已经不维护,很多第三方库已经无法安装)
- 3. JSR223 Sampler 介绍:
"JSR223" 是指 Java 规范请求(Java Specification Request)第223号。
允许使用各种脚本语言编写自定义逻辑来处理测试中的各种任务
支持多种脚本语言: 支持多种脚本语言,如 Groovy、JavaScript、Python、Ruby 等。
2.使用groovy编写MongoDB查询操作代码 进行压测
- 1.更新jar包
- 需要更新MongoDB jar包 ,地址:https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver/3.8.2
- 将下载的 mongo-java-driver-*.jar 包放到 jmeter/lib中(建议备份原来的 mongo-java-driver-2.11.3.jar包)。
- 2. 添加取样器
- 取样器选择 JSR223 Sampler
- 脚本语言选择 groovy
- MongoDB查询操作的代码:
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 com.mongodb.client.FindIterable;
import static com.mongodb.client.model.Filters.*;
import org.bson.types.ObjectId;
import org.bson.Document;
import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;
try {
// 建立数据库连接
MongoClient mongoClient = MongoClients.create("mongodb://用户名:密码@IP地址:端口号/数据库名称");
// 连接数据库的集合(表名)
MongoCollection<Document> collection = database.getCollection("表名");
// 方式1.通过固定的key去查询
// def key = "1"
// 方式1通过csv去读取key值
def key = ${key}
Document result = collection.find(eq("id", key)).first();
return "查询:" + result
}
catch (Exception e) {
SampleResult.setSuccessful(false);
SampleResult.setResponseCode("500");
SampleResult.setResponseMessage("Exception: " + e);
}
3.通过BeanShell取样器去执行本地的Python脚本
1. 需要下载pythonjar包:
地址:https://repo1.maven.org/maven2/org/python/jython-standalone/2.7.4/jython-standalone-2.7.4.jar
2. BeanShell 取样器 写上执行python脚本
import java.io.BufferedReader;
import java.io.InputStreamReader;
String pythonScriptPath = "python脚本位置";
// eg: String pythonScriptPath = "E:/test/main.py";
try {
Process process = Runtime.getRuntime().exec("python " + pythonScriptPath);
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuilder output = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
output.append(line).append("\n");
}
process.waitFor();
int exitValue = process.exitValue();
# 在jmeter中打印日志
log.info("Python script output:\n" + output.toString());
log.info("Python script exit value: " + exitValue);
// 存储变量,获取python中所以通过print打印出来的内容
vars.put("pythonOutput", output.toString());
} catch (Exception e) {
log.error("Error executing Python script: " + e.getMessage());
}
3. JSR223 Sampler中选择 jypython语言
# 使用JSR223 Sampler 把结果输出到查看结果树中
log.info("*"*100)
# 使用刚才的变量
result = vars.get("pythonOutput")
log.info("result:"+result)
log.info("*"*100)
# 设置响应信息
SampleResult.setResponseData(result);
SampleResult.setResponseCode("200")
SampleResult.setSuccessful(True)
4.资源地址
- 代码地址 & jar包地址:
https://github.com/wwsit/python_files/tree/master/006_jmeter/001_MongoDB
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
文章标题:使用Jmeter对MongoDB进行压测
本文作者:伟生
发布时间:2024-08-24, 15:55:00
最后更新:2024-08-24, 19:11:13
原始链接:http://yoursite.com/2024/08/24/ceshi_18_jmeter_01_MongoDB/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。