我正在使用以下代码来连接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
请建议我可以对我的代码进行哪些更改,以便它可以正常工作而不会出错。
我只是在 mongo db 连接中将 minPoolSize=3000 增加到 minPoolSize=5000。这将解决我的问题。
另请注意,如果您增加最小池大小,则 mongo 服务器 CPU 和内存利用率也会增加。因此,您需要在增加大小之前对其进行监视。