我正在使用以下代码连接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
请提出我可以对代码进行哪些更改,以便其可以正常运行。
答案 0 :(得分:0)
我只是在mongo db连接中将minPoolSize = 3000增加到minPoolSize = 5000。这将解决我的问题。
还请注意,如果增加最小池大小,则mongo服务器的CPU和内存利用率也会增加。因此,您需要在增大大小之前对其进行监视。