пул соединений mongodb - PullRequest
       6

пул соединений mongodb

7 голосов
/ 23 января 2012

Я использую драйвер Java для доступа к mongodb. Я предполагаю, что пул соединений с БД внутренне обрабатывается драйвером. Но число моих подключений увеличивается при каждом доступе к БД.

Это мой журнал serverStatus.

"connections" : {
            "current" : 276,
            "available" : 543
    }

Нужно ли явно закрывать монго-соединения? Как я должен управлять пулами соединений в Java?

Ответы [ 3 ]

17 голосов
/ 23 января 2012

Вы должны использовать один объект Mongo, так что он сделает пул за вас.Однако, если вы используете несколько объектов, вам нужно явно вызвать .close().

From: http://www.mongodb.org/display/DOCS/Java+Tutorial

Класс Mongo разработан для обеспечения многопоточной обработки и совместного использования между потоками.Обычно вы создаете только 1 экземпляр для данного кластера БД и используете его в своем приложении.Если по какой-то причине вы решили создать много экземпляров mongo, обратите внимание, что:

все ограничения на использование ресурсов (максимальное количество соединений и т. Д.) Применяются к экземпляру mongo для удаления экземпляра, убедитесь, что вы вызываете mongo.close ()очистить ресурсы

1 голос
/ 15 февраля 2019

MongoDB, MongoDB действует как пул соединений для mongoDB и создается для каждого приложения и для каждой базы данных.

Обычно вы создаете только один экземпляр MongoClient для данного развертывания MongoDB (например, автономный, набор реплик или сегментированный кластер) и используете его в своем приложении. Однако, если вы создаете несколько экземпляров:

Все ограничения на использование ресурсов (например, максимальное количество подключений и т. Д.) Применяются к экземпляру MongoClient.

Ссылка: http://mongodb.github.io/mongo-java-driver/3.4/driver/tutorials/connect-to-mongodb/

MongoClientOptions options = 
MongoClientOptions.builder()
            .threadsAllowedToBlockForConnectionMultiplier(prop.getThreadsAllowedToBlock())
.connectionsPerHost(pro.getConnectionsPerHost())
.connectTimeout(prop.getConnectionTimeout())
.maxWaitTime(prop.getConnectionTimeout())
.socketTimeout(1000)
.heartbeatConnectTimeout(prop.getHeartbeatConnectTimeout())
.writeConcern(WriteConcern.ACKNOWLEDGED).build();

MongoClient mongoclient = new MongoClient(seeds,credential, options); credential, options);

Это работает как пул соединений. Мы можем создать экземпляр MongoTemplate из MongoClient.

1 голос
/ 14 сентября 2016

Вы можете установить максимальный размер пула mongodb: // *** /? MaxPoolSize = 5 для подробного просмотра этой документации https://docs.mongodb.com/manual/reference/connection-string/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...