我创建了一个单例类来获取mongo数据存储区。
public enum AppMongoConfig {
INSTANCE;
private Mongo mongo;
private Morphia morphia = new Morphia();;
private Datastore datastore;
private String ip;
private String schema;
private DB db;
private int port;
private AppMongoConfig() {
initialize();
}
public void initialize() {
Logger.info(" ##### Initializing mongo app db ######");
this.ip = Play.application().configuration()
.getString("appMongoDBHost");
this.schema = Play.application().configuration()
.getString("appMongoDBSchema");
this.port = Play.application().configuration().getInt("appMongoDBPort");
try {
this.mongo = new Mongo(this.ip, this.port);
} catch (Exception e) {
throw new RuntimeException(e);
}
this.db = this.mongo.getDB(this.schema);
System.out.println(db.getCollection("DataSet").find().count());
this.datastore = this.morphia.createDatastore(this.mongo,
this.db.getName());
Logger.info(" ##### Initialized mongo app db ######");
}
public Datastore getDs() {
return this.datastore;
}
}
现在我在后续调用查询mongo database的任何方法上调用getDs()。查询包括查找,更新,保存等。 要查看我的mongoDB的统计信息,我执行了mongostats脚本。 我一直在监视活动连接的数量。 我看到当我的应用程序查询mongoDB时,活动连接数量正在增加。 此计数超过了,我必须重新启动我的mongoDB。 有没有办法在一些空闲时间后释放连接或实现连接池,以便mongo不会抛出太多的连接异常?