sql >> Base de Datos >  >> NoSQL >> Redis

StackExchange.Redis.RedisTimeoutException:tiempo de espera de respuesta

Como puedo ver en su mensaje de excepción, su recuento mínimo de procesos de trabajo es demasiado bajo para el tráfico que tiene.

TRABAJADOR:(Ocupado=10, Libre=32757, Min=2, Max=32767)

Tenía 10 subprocesos de trabajo ocupados cuando ocurrió esta excepción, mientras que tenía 2 subprocesos de trabajo para comenzar.

Cuando su aplicación se queda sin subprocesos disponibles para completar una operación, .NET inicia uno nuevo (hasta el valor máximo, por supuesto). Y espera un poco para ver si se necesita un subproceso de trabajo adicional. Si su aplicación aún necesita subprocesos de trabajo, entonces .NET inicia otro. Luego otro, luego otro... Pero esto requiere tiempo. No ocurre en 0 ms. Al mirar su mensaje de excepción, podemos ver que .NET había creado 8 subprocesos de trabajo adicionales (10 - 2 =8). Durante el proceso de creación, esta operación particular de Redis esperó y finalmente se agotó.

Podría usar ThreadPool.SetMinThreads(Int32, Int32) método al comienzo de su aplicación para establecer el número mínimo de hilos. Le sugiero que comience con ThreadPool.SetMinThreads(10, 10) y modifíquelo mientras lo prueba.

Lectura adicional:

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