在JMeter和MongoDB方面存在问题:检测到未知的BSON类型。

huangapple 未分类评论51阅读模式
英文:

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(&quot;databaseName&quot;));
	MongoCollection&lt;Document&gt; collection = database.getCollection(vars.get(&quot;collectionName&quot;));

	Document document = new Document(&quot;_id&quot;, 7);
	collection.insertOne(document);
}
catch (Exception e){
	SampleResult.setSuccessful(false);
	SampleResult.setResponseCode(&quot;500&quot;);
	SampleResult.setResponseMessage(&quot;Exception: &quot; + 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 &quot;\x7b&quot; for fieldname &quot;^A&quot;. 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 &quot;\x7b&quot; for fieldname &quot;^A&quot;. 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.

huangapple
  • 本文由 发表于 2020年5月29日 21:27:05
  • 转载请务必保留本文链接:https://java.coder-hub.com/62087097.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定