sql >> Databasteknik >  >> NoSQL >> MongoDB

mongodb öppen anslutningsproblem

MongoClient har intern anslutningspool. Maximalt antal anslutningar kan konfigureras (standard är 100). Du kan ställa in det genom att använda MongoClientOptions så här:

MongoClientOptions options = MongoClientOptions.builder()
                .connectionsPerHost(100)
                .autoConnectRetry(true)
                .build();

Och ge sedan dessa alternativ till MongoClient (kontrollerade det i Mongo Java API v2.11.1). Anslutningar i poolen hålls öppna (att öppna och stänga anslutningen är vanligtvis en dyr operation) så att de kan återanvändas senare.

Jag skulle också refaktorisera din MongoDB-klientsingel med enum till exempel för att undvika att sätta synchronized på denna metod.

Här är en skiss på vad jag menar:

public enum MongoDB {
    INSTANCE;

    private static final String MONGO_DB_HOST = "some.mongohost.com";
    private Mongo mongo;
    private DB someDB;

    MongoDB() {

        MongoClientOptions options = MongoClientOptions.builder()
                .connectionsPerHost(100)
                .autoConnectRetry(true)
                .readPreference(ReadPreference.secondaryPreferred())
                .build();

        try {
            mongo = new MongoClient(MONGO_DB_HOST, options);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }

        someDB = mongo.getDB("someDB");
         //authenticate if needed
         //boolean auth = someDB.authenticate("username", "password".toCharArray());
         //if(!auth){
         //     System.out.println("Error Connecting To DB");
         //}        
    }

    public DB getSomeDB() {
        return someDB;
    }

    //call it on your shutdown hook for example 
    public void close(){
        mongo.close();
    }
}

Sedan kan du komma åt din databas via

MongoDB.INSTANCE.getSomeDB().getCollection("someCollection").count();



  1. MongoDB listCollections filter

  2. Nodejs applikations docker kan inte ansluta till mongodb docker container

  3. Hur anger man en beställning eller sortering med C#-drivrutinen för MongoDB?

  4. Utveckla databasschema för Notify som facebook