使用Java获取mongoDB中打开的连接数

问题描述 投票:2回答:2

我的程序需要打开大量连接(Mongo)。我收到错误消息:

打开的连接太多,无法再打开

在819个连接之后。我已经知道我们可以增加此限制。但这不是我的想法。我正在考虑关闭MongoClient对象,然后在800个连接后再次创建一个新对象。

我的想法是,使用新的mongoClient对象将关闭所有连接,并且当我再次启动/创建它时,连接将再次打开直到800。因此没有给出错误。 (让我知道此方法是否完全错误/不会提供所需的结果。)

为此,我需要知道打开ATM的连接数。有什么方法可以使用Java获取此信息?

java mongodb mongodb-java
2个回答
3
投票

您可以使用db.serverStatus()命令获得连接信息。它有一个连接子文档,其中包含总/可用的连接信息。

更多信息:


0
投票

使用MongoDB Scala驱动程序检查MongoDB连接数:

  1. 创建MongoDB客户端:
import org.mongodb.scala._
import scala.collection.JavaConverters._
import scala.concurrent.Await
import scala.concurrent.duration._
import scala.util.{Failure, Success, Try}

// To directly connect to the default server localhost on port 27017
val mongodbClient: MongoClient = MongoClient()

// Use a Connection String
val mongodbClient: MongoClient = MongoClient("mongodb://localhost")

// or provide custom MongoClientSettings
val settings: MongoClientSettings = MongoClientSettings.builder()
    .applyToClusterSettings(b => b.hosts(List(new ServerAddress("localhost")).asJava).
    .build()
val mongodbClient: MongoClient = MongoClient(settings)
  1. 通过传递mongodbClient调用getNoOfMongodbConnection:
val result = getNoOfMongodbConnection(mongodbClient)
  1. 获得连接数(当前,可用和总数的方法)
def getNoOfMongodbConnection(mongodbClient: MongoClient) = {

    val adminDatabase = mongodbClient.getDatabase("admin")

    val serverStatus = adminDatabase.runCommand(Document("serverStatus" -> 1)).toFuture()

    Try {
      Await.result(serverStatus, 10 seconds)

    } match {
      case Success(x) => {

        val connection = x.get("connections")
        logger.info("Number of mongodb connection:--> " + connection)
        connection
      }
      case Failure(ex) => {
        logger.error("Got error while getting the number of Mongodb connection:---> " + ex.printStackTrace())
        None
      }
    }
  }
© www.soinside.com 2019 - 2024. All rights reserved.