Я испытываю так называемый Timeout, выполняющий HGET-компанию: продукт: настройки, inst: 1, queue: 8, qu = 0, qs = 8, qc = 0, wr = 0/0, in = 79/1 исключение тайм-аута.
Странно, потому что тот же экземпляр Redis и на том же компьютере хранит данные, но это конкретное приложение, которое выдает это исключение. Обновление: на самом деле одно и то же приложение, на одну строку выше, получает данные от Redis. Проблема заключается в HGET.
Кроме того, я увеличил тайм-ауты в конфигурации мультиплексора до 6 секунд без везения.
Кроме того, я проверил, что экземпляр IDatabase имеет IsConnected с true значением.
Как интерпретировать эти сообщения об ошибках и что проблема за весь таймаут?
Некоторые фон...
Я успешно исправил проблему, когда какой-то раздел кода получает базу данных (т.е. multiplexer.GetDatabase()).
В то время как мультиплексор имеет экземпляр на AppDomain, как описано в документации StackExchange.Redis, многие инверсии компонентов управления создают в своем коде несколько экземпляров IDatabase. То есть экземпляр IDatabase не используется.
Фактический код выполняет ListRightPopLeftPush, а затем создает экземпляр инверсии управляющего компонента, который считывает хэш-ключ во время компонентного статирования. Если экземпляр всего компонента перед выполнением так называемого ListRightPopLeftPush, тогда весь HashGet не будет вызывать исключение таймаута.
Похоже, что даже когда ListRightPopLeftPush выполняется из другого экземпляра IDatabase, он производит некоторую проблему в следующем экземпляре IDatabase, когда дело доходит до выполнения операций чтения.
Во всяком случае, мое исправление не отвечает на вопрос. Я только что добавил более подробную информацию, чтобы найти, что проблема и ее собственное решение.
Update
В любом случае вышеупомянутое "исправление" не будет исправлять дальнейшие обращения к чтению в Redis. Я получаю такое же исключение тайм-аута в последующих вызовах. И теперь in paramater, найденный в сообщении об исключении, говорит 60/1.