Azure Тайм-ауты Redis в NET API - PullRequest
2 голосов
/ 10 марта 2020

У меня есть asp net v4.6.1 со StackExchange.Redis v2.0.61, и, поскольку я использую redis, у меня всегда одни и те же ошибки случайным образом, вот некоторые журналы ошибок, если кто-то может помочь, я следовал официальной документации / форумам Microsoft, где приведены шаги, которые помогают уменьшить количество ошибок и изменить пул потоков.

Timeout performing GET (2000ms), next: GET key, inst: 0, qu: 0, qs: 9, aw: False, rs: ReadAsync, ws: Idle, in: 0, serverEndpoint: Unspecified/{myserver}:6380, mgr: 10 of 10 available, clientName: {myclient}, IOCP: (Busy=0,Free=1000,Min=4,Max=1000), WORKER: (Busy=38,Free=8153,Min=4,Max=8191), v: 2.0.601.3402 (Please take a look at this article for some common client-side issues that can cause timeouts: https://stackexchange.github.io/StackExchange.Redis/Timeouts) 

.

Timeout performing GET (2000ms), next: GET key1, inst: 1, qu: 0, qs: 6, aw: False, rs: ReadAsync, ws: Idle, in: 34344, serverEndpoint: Unspecified/{myserver}:6380, mgr: 10 of 10 available, clientName: {myclient}, IOCP: (Busy=0,Free=1000,Min=4,Max=1000), WORKER: (Busy=39,Free=8152,Min=4,Max=8191), v: 2.0.601.3402 (Please take a look at this article for some common client-side issues that can cause timeouts: https://stackexchange.github.io/StackExchange.Redis/Timeouts) 

.

Timeout performing GET (2000ms), next: GET key2, inst: 12, qu: 0, qs: 10, aw: False, rs: ReadAsync, ws: Idle, in: 10159, serverEndpoint: Unspecified/{myserver}:6380, mgr: 10 of 10 available, clientName: {myclient}, IOCP: (Busy=0,Free=1000,Min=4,Max=1000), WORKER: (Busy=25,Free=8166,Min=4,Max=8191), v: 2.0.601.3402 (Please take a look at this article for some common client-side issues that can cause timeouts: https://stackexchange.github.io/StackExchange.Redis/Timeouts) 

Azure stats:

Память 105MO ~ / CPU: 0% ~ 25 %

enter image description here

Спасибо;

1 Ответ

1 голос
/ 12 марта 2020

Похоже, что вы выполняете резервное копирование запросов / ответов на клиентском компьютере, что приводит к превышению времени ожидания более поздних запросов. Это может быть из-за нехватки потоков или из-за дорогостоящей логики обработки ответов c.

Во всех трех исключениях разделы WORKER показывают количество потоков Busy, превышающее Min. NET зарезервировано в ThreadPool. Вам следует изменить настройки ThreadPool, чтобы увеличить число мин или узнать, как уменьшить количество рабочих потоков в вашем клиенте, чтобы оно было меньше Min

В двух исключениях in: number показывает number больше 0. Это указывает на наличие байтов в потоке ответов, ожидающих чтения клиентским приложением. Это может быть вызвано клиентским приложением, которое отправляет запросы быстрее, чем оно может обработать их ответы. Медленная обработка ответа обычно указывает на то, что дорогостоящие логические операции c выполняются со значениями ответа, хотя это может быть дополнительно замедлено из-за истощения потока.

https://stackexchange.github.io/StackExchange.Redis/Timeouts
https://docs.microsoft.com/azure/azure-cache-for-redis/cache-troubleshoot-client#traffic -burst

...