I have a list of 200,000+ users in Redis cache.
When I try to fetch that list from Redis cache using StackExchange.Redis StringGet
I get TimeOut
error:
"Timeout performing GET , inst: 1, mgr: ExecuteSelect, err: never, queue: 2, qu: 0, qs: 2, qc: 0, wr: 0, wq: 0, in: 8596, ar: 0, IOCP: (Busy=0,Free=1000,Min=2,Max=1000), WORKER: (Busy=0,Free=4095,Min=2,Max=4095), clientName: WIN-XYZ"
Can someone explain what does these values signifies: Busy, Free, Min and Max?
I have already increased the timeout to much larger extent via this in constructor:
redis = ConnectionMultiplexer.Connect(string.Format("{0},allowAdmin=true,connectTimeout=1500000,keepAlive=100", redisConfig));
But I am still getting the timeout every time I fetch the list of users.
This is not the problem with GET only I am getting issues while setting that list too:
Timeout performing PSETEX , inst: 1, mgr: ExecuteSelect, err: never, queue: 2, qu: 0, qs: 2, qc: 0, wr: 1, wq: 1, in: 0, ar: 0, IOCP: (Busy=0,Free=1000,Min=2,Max=1000), WORKER: (Busy=0,Free=8191,Min=2,Max=8191), clientName: WIN-XYZ
at:
db.StringSet(cacheKey, bytes, slidingExpiration);
I even tried raising the various timeouts mentioned here https://stackexchange.github.io/StackExchange.Redis/Configuration:
redis = ConnectionMultiplexer.Connect(string.Format("{0},allowAdmin=true,syncTimeout=600000,connectRetry=3,connectTimeout=600000,keepAlive=180", redisConfig));
redis.PreserveAsyncOrder = false;
but I am still getting the following error:
Timeout performing GET , inst: 0, mgr: ExecuteSelect, err: never, queue: 0, qu: 0, qs: 0, qc: 0, wr: 0, wq: 0, in: 0, ar: 0, IOCP: (Busy=0,Free=1000,Min=2,Max=1000), WORKER: (Busy=2,Free=4093,Min=2,Max=4095), clientName: WIN-XYZ
connection.PreserveAsyncOrder = false;
it could be a dead lock issue – Ulug Toprak