【问题标题】:Jmeter Getting Connection Error with MongoDbJmeter使用MongoDb获取连接错误
【发布时间】:2020-01-27 18:49:19
【问题描述】:

我想对我的 mongodb 数据库执行负载测试。所以我将 mongodb 驱动程序添加到 bin/ext 文件夹并重新启动了 jmeter。我选择了 JSR223 Sampler 并选择了 groovy 作为我的语言并添加了如下连接代码

import com.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 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);
}

mongoHost、mongoPort、databaseName、collectionName 在用户定义的变量(测试计划)中配置。 当我运行采样器时出现错误

Thread Name:myThread Group 1-1
Sample Start:2020-01-27 15:57:35 IST
Load time:39
Connect Time:0
Latency:0
Size in bytes:0
Sent bytes:0
Headers size in bytes:0
Body size in bytes:0
Sample Count:1
Error Count:1
Data type ("text"|"bin"|""):text
Response code:500
Response message:javax.script.ScriptException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script3.groovy: 6: unable to resolve class com.mongodb.ServerAddress
 @ line 6, column 1.
   import com.mongodb.ServerAddress;
   ^

Script3.groovy: 5: unable to resolve class com.mongodb.MongoClientSettings
 @ line 5, column 1.
   import com.mongodb.MongoClientSettings;
   ^

Script3.groovy: 10: unable to resolve class org.bson.Document
 @ line 10, column 1.
   import org.bson.Document;
   ^

3 errors



SampleResult fields:
ContentType: 
DataEncoding: null

【问题讨论】:

    标签: groovy jmeter jmeter-5.0 jsr223


    【解决方案1】:

    您需要将以下库添加到JMeter Classpath

    1. mongo-java-driver
    2. bson

    库版本必须与您的 MongoDB 版本匹配(或至少兼容),可以通过在 MongoDB shell 中运行 db.version() query 来获得

    需要重启 JMeter 才能获取库

    更多信息:MongoDB Performance Testing with JMeter

    【讨论】:

    • 我更新了 mongo-java 驱动程序版本并添加了 bson 库连接正在建立但在读取和插入时出现未经授权的错误。
    • 响应代码:500 响应消息:异常:com.mongodb.MongoCommandException:命令失败,错误 13(未经授权):服务器 xx.xxx.xx.xxx:27017 上的“命令插入需要身份验证”。完整的响应是 {"operationTime": {"$timestamp": {"t": 1580126230, "i": 1}}, "ok": 0.0, "errmsg": "command insert requires authentication", "code" : 13, "codeName": "Unauthorized", "$clusterTime": {"clusterTime": {"$timestamp": {"t": 1580126230, "i": 1}}, "signature": {"hash" : {"$binary": "j7ylgmDSaPsZQRX/SwPTo4ZSTII=", "$type": "00"}, "keyId": {"$numberLong": "6785074748788310018"}}}}
    • 你需要像MongoCredential credential = MongoCredential.createCredential("mongoUser", "userDB", "password".toCharArray());一样实例化MongoCredential并将其传递给MongoClient初始化行
    • 我只是这样配置的。
    • 如果我这样配置 MongoClient mongoClient = MongoClients.create("mongodb://user:password@xx.xxx.xx.xxx:27017/?authSource=mysyt&ssl=true");跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多