sql >> Database teknologi >  >> NoSQL >> Redis

StackExchange.Redis.RedisTimeoutException:Timeout afventer svar

Som jeg kan se fra din undtagelsesmeddelelse, er dit minimumsantal for arbejdsprocesser for lavt til den trafik, du har.

ARBEJDER:(Optaget=10, Ledig=32757, Min=2, Maks=32767)

Du havde 10 travle arbejdertråde, da denne undtagelse skete, mens du havde 2 arbejdertråde til start.

Når din applikation løber tør for tilgængelige tråde til at fuldføre en operation, starter .NET en ny (naturligvis indtil maksimal værdi). Og venter lidt for at se, om der er brug for en ekstra arbejdertråd. Hvis din applikation stadig har brug for arbejdstråde, starter .NET en anden. Så en til, så en til... Men det her kræver tid. Det sker ikke inden for 0 ms. Ved at se din undtagelsesmeddelelse kan vi se, at .NET havde oprettet 8 yderligere arbejdstråde (10 - 2 =8). Under oprettelsesprocessen havde denne særlige Redis-operation ventet og fik til sidst timeout.

Du kan bruge ThreadPool.SetMinThreads(Int32, Int32) metode i begyndelsen af ​​din ansøgning for at indstille minimumstrådantal. Jeg foreslår, at du starter med ThreadPool.SetMinThreads(10, 10) og juster det, mens du tester det.

Yderligere læsning:

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




  1. Spring boot starter data hvile, @Notnull begrænsning virker ikke

  2. spring data - Mongodb - findBy Method for indlejrede objekter

  3. Hvorfor udløber Redis-nøgler ikke?

  4. MongoDB $acos