sql >> Database >  >> NoSQL >> Redis

StackExchange.Redis.RedisTimeoutException:time-out in afwachting van antwoord

Zoals ik aan uw uitzonderingsbericht kan zien, is uw minimale aantal werkprocessen te laag voor het verkeer dat u heeft.

WERKER:(Bezet=10,Vrij=32757,Min=2,Max=32767)

U had 10 drukke werkthreads toen deze uitzondering plaatsvond, terwijl u 2 werkthreads had om te beginnen.

Wanneer uw toepassing geen beschikbare threads meer heeft om een ​​bewerking te voltooien, start .NET een nieuwe (uiteraard tot de maximale waarde). En wacht een beetje om te zien of een extra werkthread nodig is. Als uw toepassing nog steeds werkthreads nodig heeft, start .NET een andere. Dan nog een, dan nog een... Maar dit heeft tijd nodig. Het gebeurt niet in 0 ms. Door uw uitzonderingsbericht te bekijken, kunnen we zien dat .NET 8 extra werkthreads heeft gemaakt (10 - 2 =8). Tijdens het creatieproces had deze specifieke Redis-operatie gewacht en uiteindelijk een time-out gekregen.

Je zou kunnen gebruiken ThreadPool.SetMinThreads(Int32, Int32) methode aan het begin van uw toepassing om het minimale aantal threads in te stellen. Ik raad je aan te beginnen met ThreadPool.SetMinThreads(10, 10) en pas het aan terwijl je het test.

Aanvullende informatie:

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




  1. Best practices voor databaseback-ups

  2. Gegevens lezen van Redis naar Flink

  3. MongoDB $sampleRate

  4. Transactieondersteuning naar Cloudera Operational Database brengen