Может ли шаблон Redis вызывать исключение connectimeout при выполнении операции Redis?

Меня немного смущает разница между тайм-аутом подключения и тайм-аутом чтения. Я понимаю, что Redis может выдать исключение тайм-аута соединения, когда приложение запускается и устанавливает начальное соединение. Мои вопросы: может ли redis выдать тайм-аут подключения после запуска приложения при выполнении транзакции redis?

Способ работы пула соединений заключается в том, что выполняющаяся транзакция запрашивает повторное соединение из пула соединений. Будет ли это рассматриваться как событие, при котором может быть брошен тайм-аут соединения, если соединение не будет установлено вовремя? Затем, как только транзакция установит соединение, она выполнит операцию redis, и тогда может возникнуть тайм-аут чтения.

Было бы полезно объяснить следующие элементы джедаев, относящиеся к исключениям:

   jedis:
          pool:
            max-active: 5
            max-idle: 5
            max-wait: -1ms
            min-idle: 3

Я переключился на следующие настройки по умолчанию, и HTTP-запросы, похоже, выполняются быстрее в среднем от почтальона:

jedis:
      pool:
        max-active: 8
        max-idle: 8
        max-wait: -1ms
        min-idle: 0

почему это происходит?

каково определение простоя и активного соединения?


person Fernando    schedule 21.11.2020    source источник


Ответы (1)


Цитата из документа

jedis.pool.max-active Максимальное количество подключений, которое может быть выделено пулом в данный момент времени. Используйте отрицательное значение для отсутствия ограничений.

jedis.pool.max-idle Максимальное количество незанятых соединений в пуле. Используйте отрицательное значение, чтобы указать неограниченное количество незанятых соединений.

jedis.pool.max-wait Максимальное количество времени, в течение которого выделение соединения должно быть заблокировано, прежде чем будет выдано исключение, когда пул исчерпан. Используйте отрицательное значение для блокировки на неопределенный срок.

jedis.pool.min-idle Цель минимального количества незанятых подключений, которые необходимо поддерживать в пуле. Этот параметр действует только в том случае, если и он, и время между запусками вытеснения положительны.

jedis.pool.time-between-eviction-runs Время между запусками потока вытеснителя бездействующих объектов. При положительном значении запускается поток вытеснения бездействующих объектов, в противном случае вытеснение бездействующих объектов не выполняется.

Увеличение max-active/max-idle просто означает, что у вас будут дополнительные соединения. Поскольку вы увеличили количество подключений с 5 до 8, вы можете отправить 3 дополнительных запроса. С другой стороны, вы установили max-wait в -1, чтобы вы могли ждать бесконечно долго.

Бездействующее соединение: когда соединение берется из пула соединений, после завершения его использования оно возвращается в пул соединений. Пул соединений использует два параметра, чтобы решить, будет ли соединение удалено или может быть использовано позже. В зависимости от тайм-аута вытеснения активное соединение будет закрыто после истечения времени вытеснения, например, если тайм-аут вытеснения составляет 5 секунд, а соединение было создано 10 секунд назад, это соединение можно закрыть, чтобы достичь max-idle соединений. Если количество активных подключений меньше max-idle, то это подключение можно сохранить и использовать повторно.

person sonus21    schedule 21.11.2020
comment
что такое неактивное соединение? - person Fernando; 22.11.2020