jedispool getResource потребляет слишком много времени ожидания - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть функция для создания 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 об / с с конфигурацией 20 незанятых соединений и 25 макс. Соединений. Способна обрабатывать ~ 600 об / с .. Есть идеи, например, что вызывает задержку? Есть ли какие-либо настройки на уровне пула для проверки?

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

1 Ответ

0 голосов
/ 12 февраля 2020

Вы можете проверить ожидающие потоки и максимальное время ожидания, используя следующий метод в пуле.

jedisPool.getNumWaiters();
jedisPool.getMaxBorrowWaitTimeMillis()

Но я думаю, что есть проблема с сетевым уровнем.

...