JedisPool.getResource()方法卡死的解决办法
2017-06-16 09:37
274 查看
我在执行redis的操作的时候,发现pool.getResource()方法卡死,代码如下:
public boolean sismember(String key, String value) {
Jedis jedis = null;
try {
jedis = pool.getResource(); //这里卡死
if(jedis != null && isRedisAlive()) {
return jedis.sismember(key, value);
}
}catch(Exception e) {
if(jedis != null) {
pool.returnBrokenResource(jedis);
}
logger.error("pic Redis sismember error, ip = " + serverIP + " , port = " + port, e);
}finally {
if(jedis != null) {
pool.returnResource(jedis);
}
}
return false;
}
下面是我创建JedisPool对象代码
JedisPoolConfig config = new JedisPoolConfig();
this.serverIP = serverIp;
this.port = port;
this.timeout = timeout;
this.auth = auth;
pool = new JedisPool(config, serverIp, port, timeout, auth);
卡死应该是资源不够,资源队列为空,导致getResource的时候阻塞住了,
所以我添加了如下配置:
config.setMaxWaitMillis(10 * 1000);
config.setMaxIdle(1000);
config.setTestOnBorrow(true);
然后成功获取到了资源。
public boolean sismember(String key, String value) {
Jedis jedis = null;
try {
jedis = pool.getResource(); //这里卡死
if(jedis != null && isRedisAlive()) {
return jedis.sismember(key, value);
}
}catch(Exception e) {
if(jedis != null) {
pool.returnBrokenResource(jedis);
}
logger.error("pic Redis sismember error, ip = " + serverIP + " , port = " + port, e);
}finally {
if(jedis != null) {
pool.returnResource(jedis);
}
}
return false;
}
下面是我创建JedisPool对象代码
JedisPoolConfig config = new JedisPoolConfig();
this.serverIP = serverIp;
this.port = port;
this.timeout = timeout;
this.auth = auth;
pool = new JedisPool(config, serverIp, port, timeout, auth);
卡死应该是资源不够,资源队列为空,导致getResource的时候阻塞住了,
所以我添加了如下配置:
config.setMaxWaitMillis(10 * 1000);
config.setMaxIdle(1000);
config.setTestOnBorrow(true);
然后成功获取到了资源。
相关文章推荐
- Redis一个异常的解决办法,异常描述:Could not get a resource from the pool
- php用get方法从url上获得的中文乱码解决办法
- 关于JPA封装数据库数据到实体不调用属性的get和set的方法解决办法
- Spring3与hibernate4整合,sessionFactory.getCurrentSession()方法获取不到Session对象异常解决办法
- getHibernateTemplate().update()方法更新不了解决办法
- 解决 GetManifestResourceStream 得到的 Stream 是 null 的方法
- getHibernateTemplate()中的方法报java.lang.NullPointerException的解决办法
- 找不到方法:“Boolean System.Runtime.Serialization.DataContractAttribute.get_IsReference()”。的解决办法
- 使用Bitmap.FromStream(GetType().Assembly.GetManifestResourceStream())出现System.ArgumentException的解决办法
- 关于使用super.getHibernateTemplate()中的方法报java.lang.NullPointerException的解决办法
- chrome 中调用 getSVGDocument() 方法返回null 解决办法
- HttpWebRequest.GetRequestStream方法timeout的原因及解决办法
- Redis客户端连接异常:Could not get resource from the pool 解决办法
- 使用Bitmap.FromStream(GetType().Assembly.GetManifestResourceStream())出现System.ArgumentException的解决办法
- GET方法传递中文参数乱码解决办法
- 【转载】使用Bitmap.FromStream(GetType().Assembly.GetManifestResourceStream())出现System.ArgumentException的解决办法
- Java调用Document.getElementById方法返回null的解决办法
- 错误“非静态的字段、方法或属性“System.Web.UI.Page.Response.get”要求对象引用”的解决办法
- struts2和javabean的set/get方法命名规范不一致解决办法
- redis---Redis一个异常的解决办法,异常描述:Could not get a resource from the pool