我很难理解 getConnectionsPerHost()
和 getMaxSize()
这两种方法之间的区别
public int getConnectionsPerHost() The maximum number of connections allowed per host for this MongoClient instance. Those connections will be kept in a pool when idle. Once the pool is exhausted, any operation requiring a connection will block waiting for an available connection.
默认值为 100。
返回: 每个主机连接池的最大大小
http://api.mongodb.com/java/current/com/mongodb/MongoClientOptions.html#getConnectionsPerHost--
public int getMaxSize()The maximum number of connections allowed. Those connections will be kept in the pool when idle. Once the pool is exhausted, any operation requiring a connection will block waiting for an available connection.
默认值为 100。 http://api.mongodb.com/java/current/com/mongodb/connection/ConnectionPoolSettings.html#getMaxSize--
请详细说明如果 getConnectionsPerHost()
等于 10 并且 getMaxSize()
等于 10 那么这意味着什么以及我们如何确保连接池是一吗?上述方法是否描述了它?
最佳答案
getConnectionsPerHost() - 这表示与 MongoClient 相关的连接。
getMaxSize() - 这表示 mongodb 服务器的连接池大小。
一般来说,getConnectionsPerHost() 可以小于或等于 getMaxSize()。
<小时/>具有内部连接池的 MongoDB 客户端 (MongoClient)。对于大多数应用程序,您应该为整个 JVM 提供一个 MongoClient 实例。 http://api.mongodb.com/java/2.10.0/com/mongodb/MongoClient.html
MongoClient 连接池 连接池是由驱动程序维护的数据库连接的缓存,以便在需要与数据库建立新连接时可以重新使用连接。为了减少应用程序创建的连接池数量,建议调用一次 MongoClient.connect 并重用数据库变量进行进一步的数据库操作。 https://mongodb.github.io/node-mongodb-native/driver-articles/mongoclient.html
我们如何确保连接池是一个?上述方法是否描述了它?
以上方法 getConnectionsPerHost() 或 getMaxSize() 都不是单一连接池。
但是,对于数据库集群只有一个 MongoClient 并跨应用程序使用它是一种很好的做法,因为 MongoClient 类被设计为线程安全并在线程之间共享。
创建许多 MongoClient 实例时,请记住所有资源使用限制(最大连接数等)适用于每个 MongoClient 实例,并且要处置实例,请确保调用 MongoClient.close() 来清理资源
关于java - mongo java驱动程序中的getConnectionsPerHost()和getMaxSize()方法有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38069854/