Reputation: 9630
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
Upvotes: 9
Views: 9085
Reputation: 670
In my case I restarted the server and it worked, the problem is that the server CPU was 100% and when the user was trying to get the credentials from redis it was impossible to access, so... TIMEOUT and kick out from the session with a beautiful error message. Be careful of your processes, maybe one of them was killing the CPU, if that happens, I can sure, Redis will timeout.
My error message:
Error Message: Timeout performing GET [email protected], inst: 1, mgr:
Inactive, err: never, queue: 5, qu: 0, qs: 5, qc: 0, wr: 0, wq: 0, in: 990, ar: 0,
clientName: RD0003FXXXXF5D, serverEndpoint:
Unspecified/cr.redis.cache.windows.net:6380, keyHashSlot: 14356, IOCP:
(Busy=0,Free=1000,Min=2,Max=1000), WORKER: (Busy=10,Free=8181,Min=2,Max=8191) (Please take a look at this article for some common client-side issues that can cause
timeouts: http://stackexchange.github.io/StackExchange.Redis/Timeouts)
Upvotes: 2