MongoDB连接池耗尽

异常日志:

Out of semaphores to get db connection 
查看源代码发现是连接池资源用尽: 

 

查代码看原因:

DBPortPool 写道
if ( ! _waitingSem.tryAcquire() )
throw new SemaphoresOut();

 

_waitingSem初始化代码

 

DBPortPool 写道
_waitingSem = new Semaphore( _options.connectionsPerHost * _options.threadsAllowedToBlockForConnectionMultiplier );

 

 

MongoOptions 写道
public MongoOptions(){
reset();
}

public void reset(){
connectionsPerHost = Bytes.CONNECTIONS_PER_HOST;
threadsAllowedToBlockForConnectionMultiplier = 5;
maxWaitTime = 1000 * 60 * 2;
connectTimeout = 0;
socketTimeout = 0;
socketKeepAlive = false;
autoConnectRetry = false;
maxAutoConnectRetryTime = 0;
slaveOk = false;
safe = false;
w = 0;
wtimeout = 0;
fsync = false;
j = false;
dbDecoderFactory = DefaultDBDecoder.FACTORY;
socketFactory = SocketFactory.getDefault();
}

 

其中:

static final int CONNECTIONS_PER_HOST = Integer.parseInt( System.getProperty( "MONGO.POOLSIZE" , "10" ) );

 

改变连接池大小:

1、可以通过系统属性改变连接池大小。

2、代码层面修改,new Mongo的时,先一个你需要的MongoOptions

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值