Jmeter和MongoDB的问题:检测到未知的BSON类型

时间:2020-05-29 13:27:05

标签: java mongodb jmeter

我想使用Jmeter对我的MongoDB 4.2服务器进行压力测试。 现在,我没有使用任何特定的配置,我只是在localhost上启动mongod实例。

我按照本指南设置了jmeter:https://www.blazemeter.com/blog/mongodb-performance-testing-with-jmeter。 但是,我无法正确运行以下测试:

import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import static com.mongodb.client.model.Filters.*;

import org.bson.Document;
import org.bson.types.ObjectId;
import java.util.Arrays;

try{
    MongoClient mongoClient = MongoClients.create();
    MongoDatabase database = mongoClient.getDatabase(vars.get("databaseName"));
    MongoCollection<Document> collection = database.getCollection(vars.get("collectionName"));

    Document document = new Document("_id", 7);
    collection.insertOne(document);
}
catch (Exception e){
    SampleResult.setSuccessful(false);
    SampleResult.setResponseCode("500");
    SampleResult.setResponseMessage("Exception: " + e);
}

由于此错误:

2020-05-29 14:30:07,987 INFO o.m.d.cluster: Exception in monitor thread while connecting to server localhost:27017
com.mongodb.MongoException: org.bson.BsonSerializationException: Detected unknown BSON type "\x7b" for fieldname "^A". Are you using the latest driver version?
    at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:138) ~[mongo-java-driver-3.12.4.jar:?]
    at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) [mongo-java-driver-3.12.4.jar:?]
    at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: org.bson.BsonSerializationException: Detected unknown BSON type "\x7b" for fieldname "^A". Are you using the latest driver version?
    at org.bson.BsonBinaryReader.readBsonType(BsonBinaryReader.java:96) ~[bson-3.12.4.jar:?]
    at com.mongodb.internal.connection.ProtocolHelper.getField(ProtocolHelper.java:147) ~[mongo-java-driver-3.12.4.jar:?]
    at com.mongodb.internal.connection.ProtocolHelper.getOperationTime(ProtocolHelper.java:102) ~[mongo-java-driver-3.12.4.jar:?]
    at com.mongodb.internal.connection.InternalStreamConnection.updateSessionContext(InternalStreamConnection.java:537) ~[mongo-java-driver-3.12.4.jar:?]
    at com.mongodb.internal.connection.InternalStreamConnection.receiveCommandMessageResponse(InternalStreamConnection.java:301) ~[mongo-java-driver-3.12.4.jar:?]
    at com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:259) ~[mongo-java-driver-3.12.4.jar:?]
    at com.mongodb.internal.connection.CommandHelper.sendAndReceive(CommandHelper.java:83) ~[mongo-java-driver-3.12.4.jar:?]
    at com.mongodb.internal.connection.CommandHelper.executeCommand(CommandHelper.java:33) ~[mongo-java-driver-3.12.4.jar:?]
    at com.mongodb.internal.connection.InternalStreamConnectionInitializer.initializeConnectionDescription(InternalStreamConnectionInitializer.java:105) ~[mongo-java-driver-3.12.4.jar:?]
    at com.mongodb.internal.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:62) ~[mongo-java-driver-3.12.4.jar:?]
    at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:129) ~[mongo-java-driver-3.12.4.jar:?]
    ... 2 more

我尝试了以下MongoDB Java驱动程序组合(在jmeter / lib和jmeter / lib / ext文件夹中):

  • mongodb-driver-core.jar,mongodb-driver-sync.jar和bson.jar(版本4.0.3和3.12.3)
  • mongo-java-driver.jar和bson.jar(版本3.12.4)

您能帮我找出问题所在吗?

1 个答案:

答案 0 :(得分:0)

我正在运行一个由我自定义的mongod实例,但是我忘记存储对消息格式所做的更改:因此mongo驱动程序无法与服务器通信。

所以问题出在我的愚蠢而不是jmeter。