mongo已经设置最大连接了,还是频繁报连接数不够

这个是获取连接的代码

 public class MongoUtil {
    private static Mongo mongo = null;
    private static DB db = null;
    private final static int POOLSIZE = 5000;// 连接数量  
    private final static int BLOCKSIZE = 1000; // 等待队列长度 
    private static Log log = LogFactory.getLog(MongoUtil.class);

    /**
     * 根据名称获取DB,相当于是连接
     * 
     * @param dbName
     * @return
     */
    public static DB getMongoDB() {
        if (mongo == null) {
            // 初始化
            init();
            db = mongo.getDB(ConfigUtils.systemConf("mongo.db"));
            db.authenticate(ConfigUtils.systemConf("mongo.user"), ConfigUtils.systemConf("mongo.pwd").toCharArray());
        }
        return db;
    }   

    private static void init() {
        String host = ConfigUtils.systemConf("mongo.ip");// 主机名
        int port = new Integer("27017");// 端口
        // 其他参数根据实际情况进行添加
        try {
            mongo = new Mongo(host, port);
            MongoOptions opt = mongo.getMongoOptions();
            opt.connectionsPerHost = POOLSIZE;
            opt.threadsAllowedToBlockForConnectionMultiplier = BLOCKSIZE;
        } catch (UnknownHostException e) {
            log.error(e);
        } catch (MongoException e) {
            log.error(e);
        }
    }
}

频繁报:Out of semaphores to get db connection

2个回答

应该不是连接数不够的原因,看看这个希望对你有所帮助
http://blog.csdn.net/jiesa/article/details/49891673

zhou_077
zhou_077 你给的文章里提到的 我都已经设置成5000和1000了啊
2 年多之前 回复

之前在其他一个帖子里面讨论过,你需要close mongo的连接。

zhou_077
zhou_077 帖子链接还有吗,还有再什么地方close?我也想到close,但一直不确定要在哪里close,因为close了不就把整个连接池关了吗,那一瞬间不是会影响其他连接mongo的程序?
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问