zoukankan      html  css  js  c++  java
  • Jedis异常:NoSuchElementException: Timeout waiting for idle object

    出现异常:java.util.NoSuchElementException: Timeout waiting for idle object

    出现原因是:不应该在try中释放资源,而应该在finally中处理。在try中释放资源,每当出现一次异常将会导致一个jedis对象无法释放,pool池中可用的jedis对象资源会越来越少。终于将会导致java.util.NoSuchElementException: Timeout waiting for idle object。

    这样的问题是一个慢性问题,需要时间积累才会出现。因为请求无法获取空暇对象,页面会出现服务端500错误。

    try{
        jedis = pool.getResource();
        // xxx 业务代码
        // 原来代码:pool.returnResource(jedis);
        // 应该放在finally块中,否则每次发生异常将导致一个jedis对象没有被移除  
    }catch(RuntimeException e){
         if(jedis != null ) {
            // 获取连接失败时,应该返回给pool,否则每次发生异常将导致一个jedis对象没有被回收
            pool.returnBrokenResource(jedis);    
        }
    }finally{
        // 正确释放资源
        if(jedis != null ) {
            pool.returnResource(jedis);
        }
    }
    
  • 相关阅读:
    更改sql server数据库所有者的对象
    对C#委托及事件委托的理解
    印度人是怎样开发软件的?
    SQL常用函数
    Ajax学习1
    Ajax学习2
    什么是ORM?
    jQuery 移动网页到制定的位置
    Juery 控件的取值赋值
    js禁用滚动条
  • 原文地址:https://www.cnblogs.com/xi-jie/p/12976640.html
Copyright © 2011-2022 走看看