ITdaan
首页
最新
原创
最火
收藏夹
写博客
关于
搜索答案
搜索本文相关内容
Redis一个异常的解决办法,异常描述:Could not get a resource from the pool
本文转载自
xbw673009796
查看原文
2016/06/28
15
解决
/
get
/
source
/
解决办法
/
异常
/
redis
收藏
0
0
异常描述:
[java]
view plain
copy
redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
at redis.clients.util.Pool.getResource(Pool.java:
22
)
at com.derbysoft.jredis.longkeytest.BorrowObject.run(BorrowObject.java:
22
)
at java.lang.Thread.run(Thread.java:
662
)
Caused by: java.util.NoSuchElementException: Timeout waiting
for
idle object
at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:
1134
)
at redis.clients.util.Pool.getResource(Pool.java:
20
)
...
2
more
1、产生原因:客户端去redis服务器拿连接(代码描述的是租用对象borrowObject)的时候,池中无可用连接,即池中所有连接被占用,且在等待时候设定的超时时间后还没拿到时,报出此异常。
2、解决办法:调整JedisPoolConfig中maxActive为适合自己系统的阀值。
<bean id="dataJedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxActive" value="300"/>
<property name="maxIdle" value="100"/>
<property name="maxWait" value="10000"/>
<property name="testOnBorrow" value="true"/>
</bean>
3、重现:
[java]
view plain
copy
public
class
BorrowObject
implements
Runnable {
private
ShardedJedisPool jedisPool;
public
BorrowObject(ShardedJedisPool jedisPool) {
this
.jedisPool = jedisPool;
}
@Override
public
void
run() {
ShardedJedis shardedJedis =
null
;
try
{
shardedJedis = jedisPool.getResource();
String value = shardedJedis.hget(
"LONG_KEY_TEST:AA059E03E0AB7D806E6C351F87404B06C1190"
,
"Roc El Pinar Aparthotel"
);
System.out.println(value);
}
catch
(Exception e) {
//logger.error(e);
e.printStackTrace();
}
finally
{
jedisPool.returnResource(shardedJedis);
}
}
}
[java]
view plain
copy
public
class
BorrowObjectTest {
private
ShardedJedisPool jedisPool =
null
;
public
BorrowObjectTest() {
List<JedisShardInfo> jedisShardInfos =
new
ArrayList<JedisShardInfo>();
JedisShardInfo jedisShardInfo =
new
JedisShardInfo(
"192.168.1.112"
);
jedisShardInfo.setTimeout(
1000000
);
jedisShardInfos.add(jedisShardInfo);
jedisPool =
new
ShardedJedisPool(createJedisConfig(), jedisShardInfos);
}
private
JedisPoolConfig createJedisConfig() {
JedisPoolConfig jedisConfig =
new
JedisPoolConfig();
jedisConfig.setMaxActive(
2
);
jedisConfig.setMaxIdle(
2
);
jedisConfig.setMaxWait(
5
);
jedisConfig.setTestOnBorrow(
true
);
return
jedisConfig;
}
public
static
void
main(String[] args) {
BorrowObjectTest borrowObjectTest =
new
BorrowObjectTest();
for
(
int
i =
0
; i <
300
; i++) {
new
Thread(
new
BorrowObject(borrowObjectTest.jedisPool)).start();
}
}
}
智能推荐
×
注意!
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。
猜您在找
redis---Redis一个异常的解决办法,异常描述:Could not get a resource from the pool
Redis一个异常的解决办法,异常描述:Could not get a resource from the pool
Redis客户端连接异常:Could not get resource from the pool 解决办法
Redis客户端连接异常:Could not get resource from the pool 解决办法
redis中 Could not get a resource from the pool 异常解决
【No448】2019 Watermelon数据开发工程师用户画像解决方案
【No148】最新尚学堂redis视频教程下载
【No93】2017年7月最新微服务架构的分布式事务解决视频教程
赞助商链接
© 2014-2019 ITdaan.com
粤ICP备14056181号
×
收藏本文
添加到收藏夹 *
赞助商广告