Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

StackExchange.Redis.RedisTimeoutException:tempo limite aguardando resposta


Como posso ver na sua mensagem de exceção, sua contagem mínima de processos de trabalho é muito baixa para o tráfego que você tem.

TRABALHADOR:(Ocupado=10,Livre=32757,Min=2,Max=32767)

Você tinha 10 threads de trabalho ocupados quando essa exceção aconteceu, enquanto você tinha 2 threads de trabalho para iniciar.

Quando seu aplicativo fica sem threads disponíveis para concluir uma operação, o .NET inicia um novo (até o valor máximo, é claro). E espera um pouco para ver se um thread de trabalho adicional é necessário. Se seu aplicativo ainda precisar de threads de trabalho, o .NET iniciará outro. Depois outro, depois outro... Mas isso requer tempo. Não ocorre em 0 ms. Observando sua mensagem de exceção, podemos ver que o .NET criou 8 threads de trabalho adicionais (10 - 2 =8). Durante o processo de criação, essa operação específica do Redis esperou e, eventualmente, expirou.

Você pode usar ThreadPool.SetMinThreads(Int32, Int32) no início do seu aplicativo para definir a contagem mínima de threads. Eu sugiro que você comece com ThreadPool.SetMinThreads(10, 10) e ajustá-lo como você testá-lo.

Leitura adicional:

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