Слишком много TCP-соединений с MongoDB - PullRequest
0 голосов
/ 15 октября 2018

Мой проект использует игровую среду и имеет MorphiaDBHelper, который использует шаблон scala и singleton.Есть класс DBAccessor, который использует Java и вызывает MorphiaDBHelper для сохранения информации в MongoDB.

У меня есть 2 вопроса:

  1. В коде должно быть только одно TCP-соединениек MongoDB. Однако я обнаружил, что всегда есть около 100 TCP-соединений с MongoDB.Кто-нибудь может посоветовать, что такое проблема и как ее исправить?

  2. MongoDB, кажется, принимает только около 100 TCP-соединений, не более.Это ограничение размера пула по умолчанию в MongoDB?

MorphiaDBHelper.scala

@Singleton
class MorphiaDBHelper(configuration: Configuration) {
val serverAddress = new ServerAddress(mongoip, mongoport)
val credential = MongoCredential.createCredential(mongouser, sesDB, mongopass.toCharArray)
val clientOptions = MongoClientOptions.builder.build
val mongoClient = new MongoClient(serverAddress, credential, clientOptions)
val datastore = morphia.createDatastore(mongoClient, sesDB)
}

DBAccessor.java

public class DBAccessor {
private static MorphiaDBHelper morphiaDBHelper = null;
public static void initMorphiaDBHelper(MorphiaDBHelper dbHelper) {
    if(morphiaDBHelper == null)
        morphiaDBHelper = dbHelper;
}

public static MorphiaDBHelper getMorphiaDBHelper() {
    return morphiaDBHelper;
}

public static <T> void savePojo(T pojo) {
    try {
        morphiaDBHelper.datastore().save(pojo);
    } catch (Exception e) {
        e.printStackTrace();
        play.Logger.error(e.getMessage());
    }
}
}
...