我是靠谱客的博主 坦率秋天,最近开发中收集的这篇文章主要介绍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的全部内容,希望文章能够帮你解决jedis异常:NoSuchElementException: Timeout waiting for idle object所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复