Mongodb CPU使用率分析
在Java中使用MongoDB时,创建一个连接,系统会分配一个连接池(可一理解成创建一个连接即创建了一个进程,一个进程里有多个线程而MongoDB应用的是里面的某个线程),在代码中,每查询一次数据库都创建了一个连接,导致浪费了许多可用的资源。解决方法:创建一个工厂类统一创建连接
工厂类代码如下:
package com.cvicse.naba.storage.dao.impl.mongodb;import com.mongodb.DB;import com.mongodb.Mongo;import com.mongodb.MongoOptions;/** * 操作Mongodb的工厂类 ** @author Wendy * */public class MongoDBFactory {private static Mongo mongo = null;private static boolean isAuth = false;/** * 构造函数,避免实例化 */private MongoDBFactory() {}/** * @param dbName * @param userName * @param pwd * @param dbIp * @param dbPort * @return */public static DB getDB(String dbName, String userName, String pwd, String dbIp, int dbPort) {if(mongo == null) {init(dbIp, dbPort);}//return mongo;DB db = mongo.getDB(dbName);if(!isAuth) {db.authenticate(userName, pwd.toCharArray());isAuth = true;}return db;}/** * @param dbIp * @param dbPort */private static void init(String dbIp, int dbPort) {try {mongo = new Mongo(dbIp, dbPort);MongoOptions opt = mongo.getMongoOptions(); opt.connectionsPerHost = 10;} catch(Exception e) {e.printStackTrace();}}}
页:
[1]