【问题标题】:Do i need to close connection of mongodb?我需要关闭mongodb的连接吗?
【发布时间】:2014-12-13 23:16:34
【问题描述】:

我是 mongodb 的新手。 我使用 mongodb 2.6.x。我正在尝试使用 java 驱动程序 2.12.x 版本与 mongodb 连接,我正在使用 MongoClient 与 mongodb 连接。每次我做任何操作时,我都会在 mongodb 管理部分收到消息,比如连接数是打开的,每次我在 mongodb 中做一些杂乱的操作时,连接数都会增加。所以,我关心的是我应该关闭连接还是不手动关闭。如果我应该手动关闭连接,那么过程是什么。因为我从中获取 Db 对象的 MongoClient 没有提供任何关闭连接的方法。

我编写的获取连接的代码是这样的:

new MongoClient("localhost", 27017).getDB("test");

从这里我得到了 DB 对象。我正在用我的网络应用程序尝试它。

如果有人有任何想法,请告诉我是否应该手动关闭 mongodb 连接。如果是那怎么办?

提前致谢。

【问题讨论】:

  • 直接从文档中`处理实例,确保调用 MongoClient.close() 来清理资源'。 mongo doc here。也许你需要更新??
  • 谢谢,但我已经提到我正在使用 mongo-java-driver-2.12.4.jar 并且我没有得到像 MongoClent.close() 这样的任何方法。如果我错了,请告诉我更多细节。感谢您的重播。
  • 您是要在 DB 或 MongoClient 上调用 close 吗?方法链接很方便,但您需要注意哪个方法返回什么引用。
  • 您在第一条评论中提到的我的朋友喜欢像这样 [MongoClient.close()] 关闭连接。所以我正在尝试这样。我确实检查了 MongoClient 和 Db 文件的源代码。我没有得到像 close() 这样的方法。谢谢
  • 仅供参考,关闭不是 Mongoclient 上的静态方法。 close() 是 Mongo.class 的非静态成员。所以你需要在mongoclient的实例上调用close()。

标签: java mongodb


【解决方案1】:

不同于传统的数据库驱动,mongodb java驱动handles the pooling and connection management。所以你在这里是安全的。但是,您可能希望在关闭应用程序时通过在 MongoClient 上调用 close 来添加关闭挂钩。

【讨论】:

    【解决方案2】:

    是的,当我们使用 java 驱动程序连接到 mongodb 时,我们可以选择使我们的连接灵活。我正在使用 2.13.x 版本的 java 驱动程序。我在哪里得到了这样的解决方案:

    MongoClientOptions 是一个类,我们可以从中获取 MongoClientOptions.builder() 并且我们根据我们的要求配置选项,最后当我们调用 MongoClient 来获取数据库时,我们可以在构造函数中传递 MongoClientOptions使我们的连接更好、更灵活。

    代码如下所示。

    MongoClientOptions mongoClientOptions= MongoClientOptions.builder().connectionsPerHost(500)
     .connectTimeout(1000).socketKeepAlive(false).cursorFinalizerEnabled(true).maxConnectionLifeTime(50)
    .writeConcern(WriteConcern.ACKNOWLEDGED).threadsAllowedToBlockForConnectionMultiplier(10).readPreference(ReadPreference.primary()).build();
    
    
    new MongoClient(listOfServer, mongoClientOptions).getDB();
    

    我确实尝试了这个解决方案并开始进行 crud 操作,在那里我发现每次点击获得的连接数也同时接近。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-25
      • 1970-01-01
      • 2021-07-26
      • 2013-10-22
      • 1970-01-01
      • 1970-01-01
      • 2013-01-10
      • 1970-01-01
      相关资源
      最近更新 更多