【问题标题】:jedispool getResource consumes too much latencyjedispool getResource 消耗太多延迟
【发布时间】:2020-05-26 06:02:27
【问题描述】:

我有一个创建jedispool的功能,

    final JedisPoolConfig poolConfig = new JedisPoolConfig();
    poolConfig.setMaxTotal(25);
    poolConfig.setMaxIdle(20);
    poolConfig.setMinIdle(20);
    poolConfig.setTestOnBorrow(false);
    poolConfig.setTestOnCreate(true);
    poolConfig.setTestOnReturn(true);
    poolConfig.setTestWhileIdle(false);
    poolConfig.setMinEvictableIdleTimeMillis(-1);
    poolConfig.setTimeBetweenEvictionRunsMillis(-1); // don't evict
    poolConfig.setNumTestsPerEvictionRun(-1);
    poolConfig.setBlockWhenExhausted(false);
    poolConfig.setLifo(false);
    return poolConfig;

我正在使用下面的池中获取客户端。我看到有时甚至在 100-500 毫秒内,有时在 30 毫秒内也有很高的延迟,以便从池中获取客户端。我正在使用 52 rps 进行测试,配置为 20 个空闲连接和 25 个最大连接。能够处理 ~600rps .. 知道什么会导致延迟吗?是否有任何池级别的调整需要验证?

    Instant instant = Instant.now();
    Instant getFromPool = null;
    try (final Jedis jedis = jedisPool.getResource()){
        getFromPool = Instant.now();
    }

【问题讨论】:

    标签: java redis jedis redis-cluster redisclient


    【解决方案1】:

    您可以在池中使用以下方法检查等待线程和最大等待时间。

    jedisPool.getNumWaiters();
    jedisPool.getMaxBorrowWaitTimeMillis()
    

    但我认为网络层有问题。

    【讨论】:

      猜你喜欢
      • 2020-04-16
      • 2011-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-02
      • 2019-01-16
      相关资源
      最近更新 更多