#java #spring #mongodb #mongo-java #spring-mongo
#java #spring #mongodb #mongo-java #spring-mongo
Вопрос:
Как изменить размер пула соединений mongo?
Я видел, что по умолчанию оно равно 100. Есть ли способ изменить это значение?
Я не хочу делать это через spring, есть ли способ настроить его через MongoClient?
Есть опция, которую я вижу в mongoClientOptions, но я не вижу опций для установки пула подключений
Ответ №1:
Вы можете создать свой собственный экземпляр MongoClient, используя MongoClientOptions.Конструктор.
MongoClientOptions.Builder builder = new MongoClientOptions.Builder();
MongoClientOptions options = builder.connectionsPerHost(10).build();
MongoClient client = new MongoClient(listOfServers, options);
Комментарии:
1. итак, этот номер 10 является пулом соединений? которое по умолчанию равно 100? Также, если у меня будет, скажем, 3 хоста, у меня будет всего 30 подключений в вашем случае?
2. Вероятно, разработчик по умолчанию 100 считает, что это лучшая настройка по умолчанию для большинства людей — я не могу ответить почему. Вышеописанное установит 10 подключений (да, пул) на хост. Если у вас 3 хоста, это будет 10 на каждый хост и 30 в общей сложности.
Ответ №2:
В качестве другого варианта (и более удобного для меня), размер пула соединений может быть изменен с помощью MongoDB URI. Пример:
MONGODB_URI (mongo): mongodb://user:password@localhost:27017/users_db?ssl=trueamp;maxPoolSize=10amp;readPreference=primaryPreferredamp;replicaSet=Dev-shard-0amp;authSource=admin
Где maxPoolSize=10
параметр — максимальное количество подключений.
Существуют также некоторые дополнительные параметры для настройки пула подключений таким образом, подробности — см. в документации — https://docs.mongodb.com/manual/reference/connection-string /
Ответ №3:
Дополнительные параметры также могут быть установлены с помощью MongoClientURI :
MongoClientOptions.Builder builder = new MongoClientOptions.Builder().connectionsPerHost(10));
MongoClientURI clientURI = new MongoClientURI(connectionURL, builder);
MongoClient mongoClient = new MongoClient(clientURI);