我们大约有100个IoT设备连接到云,并每10秒将数据发送到云。
我们在2vcore / 4G RAM和8vcore / 16G RAM上进行了测试。在短时间内,CPU使用率分别增加到200%和800%。建立的TCP连接大约为106。
是因为我们创建了太多的mongoldb连接,还是因为写入mongoDB的频率太快了?
我认为Scala中的对象就像单例,因此它应该只创建一个DBHelper对象?但是DBHelper中的代码是否为每个TCP连接创建每个数据存储区?
1.DBHelper.scala:
Object DBHelper{
var datastore= morphia.createDataStore(…………….);
}
2.MqttClient.java
mqttPushClient.setCallback(pushCallBack);
3。
public class PushCallback implements MqttCallback {
public void messageArrived(String topic, MqttMessage mqttMessage) throws Exception {
//calls DBHelper and save message to mongoDB
}
}
答案 0 :(得分:0)
您应该只创建一个MongoClient
并尽可能地重复使用。 MongoClient
有自己的内部连接池,因此可以为您管理所有连接。每次创建新客户端时,它都必须重新建立连接并加载元数据的某些位。因此,请尽可能创建一个客户端和一个Datastore
来建立该连接,并尽可能多地重用它。