Както виждам от съобщението ви за изключение, минималният ви брой работни процеси е твърде нисък за трафика, който имате.
РАБОТНИК:(Заето=10,Свободно=32757,Мин.=2,Макс.=32767)
Имахте 10 заети работни нишки, когато се случи това изключение, докато за начало имахте 2 работни нишки.
Когато в приложението ви свършат наличните нишки за завършване на операция, .NET стартира нова (до максимална стойност, разбира се). И изчаква малко, за да види дали е необходима допълнителна работна нишка. Ако вашето приложение все още се нуждае от работни нишки, тогава .NET стартира друга. После още един, после още... Но това изисква време. Не се случва за 0 ms. Като разгледаме вашето съобщение за изключение, можем да видим, че .NET е създал 8 допълнителни работни нишки (10 - 2 =8). По време на процеса на създаване, тази конкретна операция на Redis изчака и в крайна сметка изтече времето за изчакване.
Можете да използвате ThreadPool.SetMinThreads(Int32, Int32)
метод в началото на вашето приложение, за да зададете минимален брой нишки. Предлагам ви да започнете с ThreadPool.SetMinThreads(10, 10)
и го настройвайте, докато го тествате.
Допълнително четене:
https://docs.microsoft.com/en-us/dotnet/api/system.threading.threadpool.setminthreadshttps://stackexchange.github.io/StackExchange.Redis/Timeouts.html