我是靠谱客的博主 忧虑期待,最近开发中收集的这篇文章主要介绍Caused by: redis.clients.jedis.exceptions.JedisException: Could not get a resource from the pool,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
公司的一个项目上线后,由于该项目每天访问的人很多,并发也不小,在该项目上线运行半个月个后出现了 redis.clients.jedis.exceptions.JedisException: Could not get a resource from the pool的问题,然后通过重新构建暂时解决了,可是过了一个星期后又出现了同一个问题,后面通过分析有可能是jedis连接池配置的连接数小了,后面改成1000,过了半个月后还是出现同样的问题,接着又改了jedis的连接超时间最后也没有解决问题;项目这个问题持续了半年,最后通过查看jedis不同版本的连接池关闭断开的代码,发现了问题最终存在。
当时项目中使用的jedis版本是2.8.2,当时这个版本的连接关闭代码(Jedis.java):
public void close() {
if (this.dataSource != null) {
if (this.client.isBroken()) {
this.dataSource.returnBrokenResource(this);
} else {
this.dataSource.returnResource(this);
}
this.dataSource = null;
} else {
super.close();
}
}
jedis:2.10.2版本的jedis的close代码:
public void close() {
if (this.dataSource != null) {
Pool<Jedis> pool = this.dataSource;
this.dataSource = null;
if (this.client.isBroken()) {
pool.returnBrokenResource(this);
} else {
pool.returnResource(this);
}
} else {
super.close();
}
}
所以最后解决办法是升级jedis版本,因为2.10.2版本有jedis连接池泄露的问题
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.10.2</version>
</dependency>
最后
以上就是忧虑期待为你收集整理的Caused by: redis.clients.jedis.exceptions.JedisException: Could not get a resource from the pool的全部内容,希望文章能够帮你解决Caused by: redis.clients.jedis.exceptions.JedisException: Could not get a resource from the pool所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复