当前位置: 首页 > 面试题库 >

如何防止连接池在mongodb上使用Java驱动程序关闭?

周兴朝
2023-03-14
问题内容

我正在从Java驱动程序2.12.3升级到3.3.0。奇怪的是,收集池似乎突然“起作用”。

我的设置如下:

连接在主线程中建立:

mongoClient = new MongoClient(new MongoClientURI("mongodb://localhost:27017"));
mongoClient.setWriteConcern(new WriteConcern(0, 10)); // deprecated, replace soon
database = mongoClient.getDatabase("Example");
// java.util.logging.Logger.getLogger("org.mongodb.driver").setLevel(Level.SEVERE);

它在数百个线程中使用:

org.bson.Document oldDoc = DBInteractions.readOneFromDb("articles");

使用如下功能:

static synchronized Document readOneFromDb(String col) {
    return database.getCollection(col).find().limit(1).sort(new Document().append("count", 1)).first();
}

对于每个数据库交互,我都会收到这样的警告:

Sep 26, 2016 2:33:19 PM com.mongodb.diagnostics.logging.JULLogger log
INFORMATION: Closed connection [connectionId{localValue:42, serverValue:248}] to localhost:27017 because the pool has been closed.

似乎仅在一次交互后关闭了连接池。但为什么? 很困惑 任何人的主意吗?


问题答案:

https://api.mongodb.com/java/3.1/com/mongodb/MongoClientOptions.html

查看链接。有几种方法可以帮助您。查看与 连接连接池 有关的超时方法。

编辑 :添加了正确的答案(在下面的评论中)

MongoClientOptions options = new MongoClientOptions.Builder().socketKeepAlive(true).build(); 
MongoClient client = new MongoClient("host", options);


 类似资料:
  • 我试图理解Datastax Cassandra驱动程序中的连池,因此我可以更好地在我的Web服务中使用它。 我有留档的1.0版。它说: Java驱动程序异步使用连接,因此可以在同一个连接上同时提交多个请求。 他们通过连接理解什么?当连接到集群时,我们有:一个生成器、一个集群和一个会话。他们中的哪一个是连接? 例如,有一个参数: MaxSimultaneousRecestsPerConnection

  • 我们有一个复制设置,其中主节点,辅助节点和仲裁节点运行mongodb社区服务器v3.4.16。 我们正在使用jasperserver从mongoDB数据库生成100个报告。 最近,我们在连接到mongodb服务器时开始面临连接重置问题,因为报告会随机失败。 应用程序(jasperserver)和mongodb在同一个网络中,它们之间没有防火墙。 有人能提供任何指导来进一步调查根本原因,以便解决问题

  • 我们正在尝试使用nodejs/mongo原生驱动程序实现下面演示(幻灯片13-18)中概述的策略。 https://www.slideshare.net/mongodb/securing-mongodb-to-serve-an-awsbased-multitenant-securityfanatic-saas-application 总结: 从node.js.创建到mongoDB的连接池 对于租户

  • 使用Morphia和mongo java驱动程序,我正在连接mongo服务器: 其中serverAddressList是主机:端口列表和使用kerberos身份验证的mongoCredential创建为: 我想使用以下参数设置自定义连接池参数: maxPoolSize 最小池大小 Maxidletimes等 为了实现这一点,我找到了ConnectionPoolSettings。建设者和com。mo

  • 在nodejs中,根据每个请求打开mongodb连接,然后在回调中关闭它是一种好做法吗? 有人说,没有必要在每个请求上打开/关闭mongodb连接,因为一旦打开,就可以共享一个连接池。 问题是如何维护和共享该池?猫鼬已经自动做到了吗? 尤其是在mongodb超时或断开连接时,是否需要重新连接? 我在这里发现了相互矛盾的答案:是否根据请求关闭mongodb连接 我读到的几乎所有在线doc nodej

  • 任何人都可以帮助我将MongoDB驱动程序配置为JBoss中连接池的核心模块。请参阅我在阅读几篇文章后尝试的以下步骤。 EAP_HOME/modules/com/mongodb/main/ 创建了一个目录,并复制了 mongodb-driver-3.4.0-rc1.jar(rc1 版本,因为稳定版 3.3.0 不包含 MongoClientFactory.class)并创建了模块.xml文件,如下