sql >> Databasteknik >  >> NoSQL >> Redis

StackExchange.Redis.RedisTimeoutException:Timeout väntar på svar

Som jag kan se av ditt undantagsmeddelande är ditt lägsta antal arbetsprocesser för lågt för den trafik du har.

ARBETARE:(Upptagen=10,Ledig=32757,Min=2,Max=32767)

Du hade 10 upptagna arbetartrådar när detta undantag inträffade, medan du hade 2 arbetartrådar till start.

När din applikation tar slut på tillgängliga trådar för att slutföra en operation, startar .NET en ny (tills maximalt värde, förstås). Och väntar lite för att se om det behövs en extra arbetartråd. Om ditt program fortfarande behöver arbetstrådar startar .NET en annan. Sedan en till, sedan en till... Men det här kräver tid. Det inträffar inte inom 0 ms. Genom att titta på ditt undantagsmeddelande kan vi se att .NET hade skapat 8 ytterligare arbetstrådar (10 - 2 =8). Under skapelseprocessen hade just denna Redis-operation väntat och så småningom tagit timeout.

Du kan använda ThreadPool.SetMinThreads(Int32, Int32) metod i början av din ansökan för att ställa in minsta antal trådar. Jag föreslår att du börjar med ThreadPool.SetMinThreads(10, 10) och justera det när du testar det.

Ytterligare läsning:

https://docs.microsoft.com/en-us/dotnet/api/system.threading.threadpool.setminthreadshttps://stackexchange.github.io/StackExchange.Redis/Timeouts.html




  1. Redis vs Service Bus för pub/underscenario

  2. Mongoose lägger till flera objekt till arrayen om de inte existerar baserat

  3. Vad är det enklaste sättet att hitta de största föremålen i Redis?

  4. Ansluter till Redis som körs i Docker Container från värddator