sql >> Databáze >  >> NoSQL >> Redis

StackExchange.Redis.RedisTimeoutException:Časový limit čekání na odpověď

Jak vidím z vaší zprávy o výjimce, váš minimální počet pracovních procesů je příliš nízký pro provoz, který máte.

PRACOVNÍK:(Zaneprázdněn=10,Volno=32757,Min=2,Max=32767)

Když nastala tato výjimka, měli jste 10 zaneprázdněných pracovních vláken, zatímco pro začátek jste měli 2 pracovní vlákna.

Když vaší aplikaci dojdou dostupná vlákna k dokončení operace, .NET spustí nové (samozřejmě do maximální hodnoty). A chvíli čeká, zda je potřeba další pracovní vlákno. Pokud vaše aplikace stále potřebuje pracovní vlákna, pak .NET spustí další. Pak další, pak další... Ale to vyžaduje čas. Nenastane za 0 ms. Když se podíváme na zprávu o výjimce, můžeme vidět, že .NET vytvořilo 8 dalších pracovních vláken (10 - 2 =8). Během procesu vytváření tato konkrétní operace Redis čekala a nakonec vypršel časový limit.

Můžete použít ThreadPool.SetMinThreads(Int32, Int32) metoda na začátku vaší aplikace pro nastavení minimálního počtu vláken. Doporučuji vám začít s ThreadPool.SetMinThreads(10, 10) a během testování jej vylaďte.

Další čtení:

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




  1. Klient GUI MongoDB (pro více platforem nebo Linux)

  2. MongoDB - Aktualizace dokumentu

  3. Sumový dotaz MongoDb

  4. Důvody pro a proti přesunu z SQL serveru na MongoDB