Я использую приведенный ниже код для подключения mongo DB.
public static class MongoDBHandler
{
static IMongoClient _client;
static IMongoDatabase _database;
static string MongoDBConnectionString;
static IMongoClient mClientConnection()
{
MongoDBConnectionString = System.Configuration.ConfigurationManager.AppSettings["connectionString"];
_client = new MongoClient(MongoDBConnectionString);
return _client;
}
public static IMongoDatabase mDatabase()
{
try
{
if (_client == null)
{
_client = mClientConnection();
}
if (_database == null)
{
var mongoUrl = new MongoUrl(MongoDBConnectionString);
_database = _client.GetDatabase(mongoUrl.DatabaseName);
}
return _database;
}
catch
{
throw;
}
}
}
Я использую код выше класса, как показано ниже: -
protected static IMongoDatabase _database;
public void GetData()
{
_database = Assistant.MongoDBHandler.mDatabase();
IMongoCollection<Models.RoomTypeMappingOnline> collection_rto = _database.GetCollection<Models.RoomTypeMappingOnline>("collection");
//Rest of code
}
Мой код работает нормально. Я могу получить данные без каких-либо проблем с меньшим количеством запросов.
Но когда я получаю больше запросов, я получаю сообщение об ошибке «Очередь ожидания для подключения к серверу заполнена».
Ниже моя строка подключения: -
mongodb://admin:password@server:11111/databse?authSource=sa&appName=database&connectTimeoutMS=5000&minPoolSize=3000&retryWrites=true&waitQueueMultiple=15
Пожалуйста, предложите, какие изменения я могу внести в свой код, чтобы он работал без ошибок.
Я просто увеличиваю minPoolSize=3000 до minPoolSize=5000 в соединении mongo db. Это решит мою проблему.
Также обратите внимание, что если вы увеличите минимальный размер пула, то также увеличится использование ЦП и памяти сервера mongo. Поэтому вам нужно следить за этим, прежде чем увеличивать размер.