【问题标题】:How to keep the connection pool from closing with a java driver on a mongodb?如何防止连接池在 mongodb 上使用 java 驱动程序关闭?
【发布时间】:2016-09-26 12:45:52
【问题描述】:

我正在从 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.

看起来好像连接池在一次交互后就关闭了。但为什么? 非常不解 有人有什么想法吗?

【问题讨论】:

  • 没有真正的答案,但有一个提示:您应该将 MongoClient 作为共享对象,您只打开一次并保持一生。 MongoDatabase 对象不是线程安全的,不应共享。

标签: java multithreading mongodb connection connection-pooling


【解决方案1】:

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

查看链接。有几种方法可能对您有所帮助。 查看 connection 和 connection pool 的超时相关方法。


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

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

【讨论】:

  • 这就是我整个下午都在做的事情,也是我在这里问的原因。 ;) 在更多想法上画个空白。
  • 看看这是否有帮助 ' MongoClientOptions options = new MongoClientOptions.Builder().socketKeepAlive(true).build(); } 并将这个选项传递给 MongoClient client = new MongoClient("host", options);'
  • 太棒了 :) 乐于助人。
  • 你在哪里添加这个?
【解决方案2】:
MongoClientOptions options = new MongoClientOptions.Builder().socketKeepAlive(true).build();

socketKeepAlive 现已弃用。
它现在 默认 为 true 并且不建议禁用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-21
    • 2021-06-05
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 2013-10-25
    相关资源
    最近更新 更多