Ошибки кэша Redis в Azure

Мы включаем кеш Redis в наше приложение Saas в Azure.

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

Timeout performing EVAL, inst: 2, queue: 23, qu: 0, qs: 23, qc: 0, wr: 0, wq: 0, in: 65536, ar: 0, 
IOCP: (Busy=1,Free=999,Min=1,Max=1000), WORKER: (Busy=2,Free=8189,Min=1,Max=8191)

Timeout performing EVAL, inst: 2, queue: 3, qu: 0, qs: 3, qc: 0, wr: 0, wq: 0, in: 65536, ar: 0, 
IOCP: (Busy=1,Free=999,Min=1,Max=1000), WORKER: (Busy=3,Free=8188,Min=1,Max=8191)

Пытаясь интерпретировать эти журналы, мне трудно понять, с чего начать, где искать и делать выводы.

Пожалуйста, кто-нибудь может рассказать мне что-нибудь об этих конкретных ценностях? Экземпляр Redis находится в той же зоне, что и сервер, я использую план c1 с 1 ГБ памяти, однако эти ошибки возникают при выполнении простых тестов.

Настройки следующие:

ConnectionTimeoutInMilliseconds = "2000" operationTimeoutInMilliseconds = "1500" retryTimeoutInMilliseconds = "4500"

На панелях мониторинга Redis в Azure я не вижу всплесков памяти, подключений или чего-либо еще, следует ли мне смотреть на какое-либо конкретное значение?


person Jsanchez    schedule 29.05.2017    source источник


Ответы (1)


Значение тайм-аута «in: 65536» очень велико. Это значение указывает, сколько данных находится в буфере ядра клиентского сокета. Это указывает на то, что данные прибыли на локальный компьютер, но не были прочитаны на уровне приложения. Обычно это происходит, когда 1) необходимо настроить параметры пула потоков или 2) когда клиентский ЦП загружен.

IOCP: (Занят = 1, Свободен = 999, Мин = 1, Макс = 1000), РАБОЧИЙ: (Занят = 2, Свободен = 8189, Мин = 1, Макс = 8191) и IOCP: (Занят = 1, Свободен = 999 , Мин = 1, Макс = 1000), РАБОЧИЙ: (Занят = 3, Свободен = 8188, Мин = 1, Макс = 8191) указывают, что вы столкнулись с проблемами регулирования роста пула потоков. Вы можете ознакомиться с объяснениями и рекомендациями здесь: https://gist.github.com/JonCole/e65411214030f0d823cb#file-threadpool-md.

person Carl Dacosta    schedule 30.05.2017
comment
Спасибо за Ваш ответ. Я настроил рост пула потоков. Но, к сожалению, у меня это не сработало. Одна из обнаруженных мною проблем заключается в том, что при использовании ReportViewer для рендеринга отчетов он создает очень сложные объекты. - person Jsanchez; 01.06.2017
comment
Когда вы говорите, что у меня это не сработало, какие ошибки вы получаете сейчас? - person Carl Dacosta; 01.06.2017
comment
Та же ошибка, что подробно описана выше. Я попытался разработать решение, удаляя ключи из ReportViewer каждый раз, когда визуализирую новый. Вроде работает прямо сейчас. Я попытался настроить threadPool, но не знаю, как это сделать при настройке из SessionStateProvider в web.config Спасибо за ваш ответ. - person Jsanchez; 08.06.2017
comment
Разве вы не можете вызвать API Threadpool.SetMinThreads (...) из Global.asax внутри вашего application_start? msdn.microsoft. com // en-us / library /. В качестве альтернативы вы можете использовать настройки minioThreads или minWorkerThreads в config. msdn.microsoft.com/en-us/library /7w2sway1(v=vs.100).aspx. Важное примечание: значение, указанное в этом элементе конфигурации, является настройкой для каждого ядра. Например, если у вас есть 4-ядерный компьютер и вы хотите, чтобы значение minIOThreads было 200 во время выполнения, вы должны использовать ‹processModel minIoThreads = 50 /›. - person Carl Dacosta; 08.06.2017