mongo java驱动程序中getConnectionsPerHost()和getMaxSize()方法有什么区别

时间:2016-06-28 07:33:49

标签: java mongodb mongodb-java

我很难理解getConnectionsPerHost()getMaxSize()两种方法之间的区别

  

public int getConnectionsPerHost()   此MongoClient实例的每个主机允许的最大连接数。闲置时,这些连接将保留在池中。池耗尽后,任何需要连接的操作都将阻止等待可用连接。

默认值为100。

返回: 每个主机的连接池的最大大小

https://github.com/Azure/msphpsql/tree/PHP-7.0-Linux/CentOS7

  

public int getMaxSize()允许的最大连接数。闲置时,这些连接将保留在池中。池耗尽后,任何需要连接的操作都将阻止等待可用连接。

默认值为100。 http://api.mongodb.com/java/current/com/mongodb/MongoClientOptions.html#getConnectionsPerHost--

请详细说明如果getConnectionsPerHost()等于10且getMaxSize()等于10那么它意味着什么以及我们如何确保连接池是一个?以上任何一种方法是否描述

1 个答案:

答案 0 :(得分:1)

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()来清理资源