jedis异常:NoSuchElementException: Timeout waiting for idle object

项目线上环境发现:java.util.NoSuchElementException: Timeout waiting for idle
object

问题原因:不应该在try中释放资源,而应该在finally中处理。虽然是非常基础的语法,但还是有可能会写错,维护老系统时发现很几处都存在这种潜在的Bug,引以为戒。在try中释放资源,每当出现一次异常将会导致一个jedis对象无法释放,pool池中可用的jedis对象资源会越来越少,最终将会导致java.util.NoSuchElementException:
Timeout waiting for idle object。这种问题是一个慢性问题,需要时间积累才会发作。

由于请求无法获取空闲对象,页面会出现服务端500错误。若代码加入循环获取jedis将还可能出现服务器宕机。

try {

jedis = pool.getResource();

// xxx 业务代码

// 原来代码:pool.returnResource(jedis);,应该放在finally块中,否则每次发生异常将导致一个jedis对象没有被t

} catch (RuntimeException e) {

if(jedis != null ) {

pool.returnBrokenResource(jedis);

}

} finally{

// 正确释放资源

if(jedis != null ) {

pool.returnResource(jedis);

}

}

jedis异常:NoSuchElementException: Timeout waiting for idle object,布布扣,bubuko.com

时间: 2024-12-30 04:05:45

jedis异常:NoSuchElementException: Timeout waiting for idle object的相关文章

Cannot get a connection, pool error Timeout waiting for idle object

Cannot get a connection, pool error Timeout waiting for idle object 异常原因 一直有hibernate的session在开启并偿试打开新连接,导致最终没有空闲链接可用. PCISV7-VHL [2017-09-07 19:10:13,625]>>>ERROR>>>[ com.isoftstone.fwk.dao.BaseDao.getNewConnection(BaseDao.java:1534) ]-

ORA-04021 timeout occurred while waiting to lock object

用户要求删除一个数据库的用户 GREENPASS,在删除的过程中,报错如下: drop user GREENPASS * ERROR at line 1: ORA-04021: timeout occurred while waiting to lock object NEWDR.HNDR_SMS_LOG 处理过程 1. 首先查询NEWDR.HNDR_SMS_LOG,这是一个'PROCEDURE': 2. 现在报错,不能对此对象进行锁定. 3. 看看什么会话在访问此对象: select B.SI

HttpClient连接池抛出大量ConnectionPoolTimeoutException: Timeout waiting for connection异常排查

今天解决了一个HttpClient的异常,汗啊,一个HttpClient使用稍有不慎都会是毁灭级别的啊. 这里有之前因为route配置不当导致服务器异常的一个处理:http://blog.csdn.net/shootyou/article/details/6415248 里面的HttpConnectionManager实现就是我在这里使用的实现. 问题表现: tomcat后台日志发现大量异常 [plain] view plain copy print? org.apache.http.conn.

关于ORA-04021解决办法(timeout occurred while waiting to lock object)

某个应用正在锁定该表或者包 表为 select b.SID,b.SERIAL#,c.SQL_TEXT from v$locked_object a, v$session b, v$sqlarea c where a.SESSION_ID = b.SID and b.SQL_ADDRESS = c.ADDRESS and c.sql_text like '%table_name%' 包为 select B.SID,b.USERNAME,b.MACHINE FROM V$ACCESS A, V$SE

关于等待多长时间会引发ORA-04021: timeout occurred while waiting to lock object错误的猜测

本文的实验环境为: [[email protected] ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Wed Jun 10 07:18:11 2015 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 -

ORA-04021:timeout occurred while waiting to lock object

编译某存储过程 ORA-04021 timeout occurred while waiting to lock object stringstringstringstringstring Cause: While waiting to lock a library object, a timeout is occurred. Action: Retry the operation later. 查找是否有用户类型的锁,即 TM                DML排队 TX          

oracle plsql 上对package 包执行重新编译时,超时无响应:(4021)time-out occurred while waiting to lock object

问题处理过程: 开发反应包存在问题, 我一看他们的用户没对应的权限,给赋予了以下权限: GRANT debug any procedure, debug connect session TO CMSOPR; GRANT EXECUTE any procedure TO CMSOPR; 开发进行调试后没执行结果. 于是我想重新编译,先重新编译的包,半天报个响应超时,当时也没想太多,以为有死锁,于是查数据库锁 -没锁. 查数据库审计表: select * from dba_audit_trail w

Eclipse项目导入Android Stuio 配置出现 Timeout waiting to lock buildscript class cache for build file 'H:\studioproject\Generic_SN\build.gradle'

Eclipse项目导入Android Stuio 配置出现 Error:Timeout waiting to lock buildscript class cache for build file 'H:\studioproject\Generic_SN\build.gradle' (C:\Users\Administrator\.gradle\caches\2.2.1\scripts\build_81ep6udn3nlzszbotl32uedjz\ProjectScript\buildscri

httpclient 4.3.3 Timeout waiting for connection

前几天写一个小脚本,爬几个页面,自己写着玩的,但是中间出现一些情况,做下备忘 在我已经设置了SocketTimeout 和 ConnectTimeout 还会出现请求一个地址的时候就卡死在那里的情况,也不知道什么原因,也没有报错,就那么卡着了 后来我跟到了httpclient的源码里这个类MainClientExec 的 方法 public CloseableHttpResponse execute(             final HttpRoute route,