Нет подключения для обслуживания этой операции (Redis Client)

Мое приложение размещено в лазурном состоянии, и я использую кэш Redis на лазурном сервере.

Версия RedisClient Redis.StrongName - 1.2.6 .Net Core - 2.1 .Net Framework 4.7.1

В моем приложении периодически возникает исключение подключения Redis, которое устраняется после перезапуска службы приложения. У меня есть 1 - вторичный и 1 - основной экземпляр, у которого кеш Redis емкостью 6 ГБ

Это исключение, которое я получил от моего клиента

внешнее сообщение: Нет доступного соединения для обслуживания этой операции: HSETNX KEYNAME; SocketClosed на МОЕ ИМЯ СЕРВЕРА REDIS / Interactive, происхождение: ProcessReadBytes, буфер ввода: 0, выдача: 0, последнее чтение: 0 секунд назад, последняя запись: 0 секунд назад, запись без ответа: 280531 секунд назад, keep-alive: 60 секунд, ожидание: 0, состояние: ConnectedEstablished, in: 0, ar: 0, last-heartbeat: 0 секунд назад, last-mbeat: 0 секунд назад, глобально: 0 секунд назад, mgr: неактивно, ошибка: никогда; IOCP: (Занят = 1, Свободен = 999, Мин = 8, Макс = 1000), РАБОЧИЙ: (Занят = 1, Свободен = 32766, Мин = 8, Макс = 32767), Локальный ЦП: нет

Внутреннее сообщение: SocketClosed на МОЕ ИМЯ СЕРВЕРА REDIS / Interactive, происхождение: ProcessReadBytes, input-buffer: 0, невыполненное: 0, последнее чтение: 0 секунд назад, последняя запись: 0 секунд назад, запись без ответа: 280531 секунд назад, keep-alive : 60 секунд, ожидание: 0, состояние: ConnectedEstablished, in: 0, ar: 0, last-heartbeat: 0 секунд назад, last-mbeat: 0 секунд назад, глобально: 0 секунд назад, mgr: неактивно, ошибка: никогда

Не уверен, что пошло не так, проблема будет решена после перезапуска службы приложения.

Пожалуйста, расскажите мне, что пошло не так? Как отлаживать исключения Redis? Как интерпретировать сообщения об исключениях?

Я сослался на некоторые уже опубликованные проблемы в stackexchange.Redis, но ничего не дает достоверной информации о первопричине этой проблемы https://github.com/StackExchange/StackExchange.Redis/issues/559

Мой процент ЦП и загрузка сервера Redis, выглядит нормально, никаких аномалий

нужно выяснить первопричину того, что пошло не так, и


person Sarva Raghavan    schedule 16.07.2019    source источник


Ответы (1)


Исключение довольно четко говорит о том, что произошло - кто-то закрыл ваш сокет. Это могло быть со стороны сервера, потому что время ожидания истекло (Azure redis поддерживает его только в течение десяти минут, если соединение неактивно), или потому, что серверу пришлось временно закрыть соединения во время аварийного переключения, или из-за проблемы в промежуточном сеть.

Но есть также некоторая вероятность, что это может быть связано с ошибкой в ​​вашем приложении, из-за которой сокет закрывается, например, преждевременная утилизация соединения.

person Tim Lovell-Smith    schedule 18.07.2019