首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongodb连接池

mongodb连接池
EN

Stack Overflow用户
提问于 2012-01-23 14:54:34
回答 3查看 45.1K关注 0票数 9

我正在使用Java驱动程序访问mongodb。我假设db连接池是由driver.But在内部处理的,我的连接计数在每次访问db时都会增加。

这是我的serverStatus日志。

代码语言:javascript
复制
"connections" : {
            "current" : 276,
            "available" : 543
    }

我需要显式关闭mongo连接吗?我应该如何在java中管理连接池?

EN

回答 3

Stack Overflow用户

发布于 2012-01-23 15:10:02

你应该使用一个单独的Mongo对象,这样它就会为你做池化。但是,如果您确实使用了多个对象,则确实需要显式调用.close()

来自:http://www.mongodb.org/display/DOCS/Java+Tutorial

,Mongo类被设计成线程安全的,并且在线程之间共享。通常,您只需为给定的DB集群创建一个实例,并在您的应用程序中使用它。如果出于某种原因,您决定创建多个mongo实例,请注意:

所有资源使用限制(最大连接数等)适用于每个mongo实例,以处置实例,请确保调用mongo.close()来清理资源

票数 21
EN

Stack Overflow用户

发布于 2019-02-16 01:03:39

MongoDB、MongoDB被用作mongoDB连接池,它是基于每个应用程序和每个数据库创建的。

通常,您只需为给定的MongoDB部署(例如,独立、副本集或分片集群)创建一个MongoClient实例,并在您的应用程序中使用它。但是,如果您确实创建了多个实例:

所有资源使用限制(例如最大连接数等)按MongoClient实例应用。

参考:http://mongodb.github.io/mongo-java-driver/3.4/driver/tutorials/connect-to-mongodb/

代码语言:javascript
复制
MongoClientOptions options = 
MongoClientOptions.builder()
            .threadsAllowedToBlockForConnectionMultiplier(prop.getThreadsAllowedToBlock())
.connectionsPerHost(pro.getConnectionsPerHost())
.connectTimeout(prop.getConnectionTimeout())
.maxWaitTime(prop.getConnectionTimeout())
.socketTimeout(1000)
.heartbeatConnectTimeout(prop.getHeartbeatConnectTimeout())
.writeConcern(WriteConcern.ACKNOWLEDGED).build();

MongoClient mongoclient = new MongoClient(seeds,credential, options); credential, options);

这是作为连接池工作的。我们可以从MongoClient实例化MongoTemplate。

票数 5
EN

Stack Overflow用户

发布于 2016-09-14 18:30:40

您可以设置最大池大小mongodb://*/?maxPoolSize=5以了解详细信息查看此文档https://docs.mongodb.com/manual/reference/connection-string/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8968125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档