zoukankan      html  css  js  c++  java
  • redis异常Redis:java.util.NoSuchElementException: Unable to validate object at

    前两天项目上线的时候遇到了redis的一个问题,在测试环境的时候项目运行正常,项目一上线redis便开始抛异常。

    redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool at
    Caused by: java.util.NoSuchElementException: Unable to validate object at


    看日志发现是池的连接不够,但是项目的调用量完全在预算之内。网上说有RDB持久化的问题,也有说是配置了 redisTestOnBorrow导致检查的时候连接不通过。但是经过排查都不是。后来去业务代码中去寻找问题、
    发现这段代码public boolean remove(final String key) { try {
        final byte[] rawKey = SerializerUtil.rawKey(key);
    if (!this.containsKey(key)) {
    return true;
    }
    Long size = (Long) this.redisTemplate.execute(
    new RedisCallback<Object> () {
    public Object doInRedis(RedisConnection connection) {
    connection.select(chooseDb(key));
    Long size = connection.del(rawKey);
    return size;
    }
    }, true);
    return size > 0 ? true : false;
    } catch (Exception e) {
    LOGGER.error(ERROR_MESSAGE, e);
    throw new CacheException(ServiceConstants.SERVICE_SYSTEM_FALIURE, e);
    }
    }
    请看标红处,每次都会选择到对应的redis库,因为测试环境的redis数据库是单机的,线上的事分布式的数据库,而且我们是Twemproxy,用一致性Hash算法,所以每次切数据库去找的时候就会找不到连接
    这里把问题记录下来,大家以后在排查问题的时候一定要把异常与业务相结合,这样才能找到自己的真正问题。



  • 相关阅读:
    Chapter 1 Secondary Sorting:Introduction
    Apache Spark : RDD
    Apache Spark : Introduction
    Python 变量和数据类型
    CMP3$
    idea实现eclipse工作空间的思路
    Oracle 数据字典查询
    sql左连接、右连接、内连接、不写连接符号
    ADB
    Serverless
  • 原文地址:https://www.cnblogs.com/technologykai/p/8650349.html
Copyright © 2011-2022 走看看