MongoDB - 获取服务器连接的等待队列已满



我正在使用以下代码来连接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 和内存利用率也会增加。因此,您需要在增加大小之前对其进行监视。

最新更新