Mongo 连接池超出范围
Mongo Connections pool is going beyond Scope
我是 java 和 Mongo 的新手 我正在尝试将最大池大小设置为 100
我是 运行 在 localhost 进行负载测试
我看到池正在重新使用,没有任何问题,但最大池大小不符合我给出的池大小
10k 次调用
池中有 300 个连接,我只给了 100
不确定这是怎么回事
谁能帮忙
------------------------代码开始-------------------- --------------
public class MongoFactory {
@Autowired
Environment environment;
private static MongoClient mongoClient;
private static String connectionString;
private static MongoDatabase database;
private static String USER_NAME;
private static String PASSWORD;
private static boolean createCollection = true;
@Autowired
EnvironmentVarUtil envUtil;
@Autowired
MongoWrapper mongoWrapper;
public void setConnectionString(String connectionString) {
this.connectionString = connectionString;
}
public String getConnectionString() {
return connectionString;
}
private static String mongoURIBuilder(String connectionString) {
return "mongodb+srv://" + USER_NAME + ":" + PASSWORD + "@" + connectionString + "/dbname?retryWrites=true&w=majority&connectTimeoutMS=30000&socketTimeoutMS=30000&maxPoolSize=100";
}
private void initMongoDB() {
if (USER_NAME == null) {
USER_NAME = envUtil.getEnvVar("mongoUserName");
}
if (PASSWORD == null) {
PASSWORD = envUtil.getEnvVar("mongoPassword");
}
String mongoURI = mongoURIBuilder(connectionString);
MongoClientURI uri = new MongoClientURI(mongoURI);
mongoClient = new MongoClient(uri);
String dbName = "dbname";
database = mongoClient.getDatabase(dbName);
}
public MongoObject load(MongoObject mongoObject) throws Exception
{
System.out.println("Start Time " +DateTime.now());
if(mongoClient==null)
{
initMongoDB();
}
// Get from DB code
System.out.println("End Time " +DateTime.now());
return mongoObject;
}
}
连接池由每个已知服务器维护。如果您的客户端知道 3 个服务器(例如副本集中的 3 个节点或 3 个 mongos 路由器),并且您将最大池大小设置为 100,则您最多可以与每个服务器建立 100 个应用程序连接,总共 300 个连接.
根据驱动程序和服务器版本,每个服务器还有 1 或 2 个监视连接。
我是 运行 在 localhost 进行负载测试 我看到池正在重新使用,没有任何问题,但最大池大小不符合我给出的池大小
10k 次调用 池中有 300 个连接,我只给了 100
不确定这是怎么回事
谁能帮忙
------------------------代码开始-------------------- --------------
public class MongoFactory {
@Autowired
Environment environment;
private static MongoClient mongoClient;
private static String connectionString;
private static MongoDatabase database;
private static String USER_NAME;
private static String PASSWORD;
private static boolean createCollection = true;
@Autowired
EnvironmentVarUtil envUtil;
@Autowired
MongoWrapper mongoWrapper;
public void setConnectionString(String connectionString) {
this.connectionString = connectionString;
}
public String getConnectionString() {
return connectionString;
}
private static String mongoURIBuilder(String connectionString) {
return "mongodb+srv://" + USER_NAME + ":" + PASSWORD + "@" + connectionString + "/dbname?retryWrites=true&w=majority&connectTimeoutMS=30000&socketTimeoutMS=30000&maxPoolSize=100";
}
private void initMongoDB() {
if (USER_NAME == null) {
USER_NAME = envUtil.getEnvVar("mongoUserName");
}
if (PASSWORD == null) {
PASSWORD = envUtil.getEnvVar("mongoPassword");
}
String mongoURI = mongoURIBuilder(connectionString);
MongoClientURI uri = new MongoClientURI(mongoURI);
mongoClient = new MongoClient(uri);
String dbName = "dbname";
database = mongoClient.getDatabase(dbName);
}
public MongoObject load(MongoObject mongoObject) throws Exception
{
System.out.println("Start Time " +DateTime.now());
if(mongoClient==null)
{
initMongoDB();
}
// Get from DB code
System.out.println("End Time " +DateTime.now());
return mongoObject;
}
}
连接池由每个已知服务器维护。如果您的客户端知道 3 个服务器(例如副本集中的 3 个节点或 3 个 mongos 路由器),并且您将最大池大小设置为 100,则您最多可以与每个服务器建立 100 个应用程序连接,总共 300 个连接.
根据驱动程序和服务器版本,每个服务器还有 1 或 2 个监视连接。