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