Почему время ожидания клиента ioredis истекает, когда включена поддержка активности?

Я получаю следующую ошибку, когда мой скрипт какое-то время простаивает. Я не могу понять причину этого.

    error: [ioredis] Unhandled error event: 
error: Error: read ECONNRESET
    at TCP.onStreamRead (internal/stream_base_commons.js:111:27) 
error: [ioredis] Unhandled error event
error: Error: read ETIMEDOUT
    at TCP.onStreamRead (internal/stream_base_commons.js:111:27) 

Я инициализирую свой клиент Redis как:

let redis = require("ioredis");
redis = Promise.promisifyAll(redis);

const redis = new redis({
   host: "my hostname",
   port: 6379,
   password: "some password"
});

и я использую клиент ioredis.

Кто-нибудь знает причину этого? Keep-alive уже включен по умолчанию, как предлагается здесь https://github.com/luin/ioredis/blob/master/API.md

Я хочу, чтобы клиент никогда не отключался по тайм-ауту и ​​не подключался снова, если тайм-аут произошел. Я использую службу Redis от Azure.


person Amanda    schedule 30.03.2020    source источник
comment
Та же проблема возникает у меня с библиотекой ioredis и образом докера redis. Также добавлена ​​опция commandTimeout, получающая commandTimeouts около 10 минут, и только потом получающая ETIMEDOUT от соединения   -  person noam7700    schedule 18.05.2021


Ответы (1)


У нас есть целый документ, посвященный этой теме: Устранение неполадок кэша Azure для тайм-аутов Redis

При использовании клиента StackExchange.Redis рекомендуется использовать следующий шаблон:

private static Lazy<ConnectionMultiplexer> lazyConnection = new Lazy<ConnectionMultiplexer>(() =>
{
return ConnectionMultiplexer.Connect("cachename.redis.cache.windows.net,abortConnect=false,ssl=true,password=...");
});
public static ConnectionMultiplexer Connection
   {
get
{
return lazyConnection.Value;
}
}

В случае ioredis вы можете установить свойство клиента: [options.lazyConnect]

Вы также захотите просмотреть любые методы повторных попыток, доступные для вашего клиента. Надеюсь, это поможет.

person Mike Ubezzi MSFT    schedule 08.04.2020