英文:
Issues with Jmeter and MongoDB: detected unknown BSON type
问题
我想要对我的 MongoDB 4.2 服务器进行 Jmeter 压力测试。
目前我没有使用任何特定的配置,我只是在本地启动 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)
你能帮我找出问题是什么吗?
英文:
I would like to stress test my MongoDB 4.2 server using Jmeter.
Right now I'm not using any particular configuration, I just start the mongod instance on localhost.
I followed this guide to set up jmeter: https://www.blazemeter.com/blog/mongodb-performance-testing-with-jmeter.
However I'm not able to correctly run the following test:
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);
}
due to this error:
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
I tried the following MongoDB Java driver combinations (in both jmeter/lib and jmeter/lib/ext folders):
- mongodb-driver-core.jar, mongodb-driver-sync.jar and bson.jar (both version 4.0.3 and 3.12.3)
- mongo-java-driver.jar and bson.jar (version 3.12.4)
Can you help me figure out what's the problem?
答案1
得分: 0
我运行了一个我定制的 mongod 实例,然后我忘记了对消息格式所做的更改:因此,mongo 驱动无法与服务器通信。
所以问题出在我自己,而不是 JMeter。
英文:
I was running a mongod instance customized by me, and I forgot to stash the changes I made to the message format: Hence the mongo driver was not able to communicate with the server.
So the problem was my idiocy, not jmeter.
专注分享java语言的经验与见解,让所有开发者获益!
评论