While investigating a performance issue we noticed that the we had a lot of RedisTimeoutExceptions inside our logs:
2019-12-15 16:26:57.425 +01:00 [ERR] Connection id "0HLS1E3OEP520", Request id "0HLS1E3OEP520:0000001D": An unhandled exception was thrown by the application.
StackExchange.Redis.RedisTimeoutException: Timeout performing PEXPIRE CookiesStorageAuthSessionStore-4a07a1bb-04e0-442d-9223-e1612967bf2b, inst: 2, queue: 8, qu: 0, qs: 8, qc: 0, wr: 0, wq: 0, in: 14411, ar: 0, clientName: SERVER1, serverEndpoint: Unspecified/redis:6379, keyHashSlot: 4822 (Please take a look at this article for some common client-side issues that can cause timeouts: http://stackexchange.github.io/StackExchange.Redis/Timeouts)
You would think that this indicates there is a performance issue in Redis but this turned out not to be the case.
Let’s have a second look at the error message and especially the strange parameters: inst: 2, queue: 8, qu: 0, qs: 8, qc: 0, wr: 0, wq: 0, in: 14411, ar: 0
In this situation you have to notice the high ‘in’ value. This value tells us how much data is sitting in the client’s socket kernel buffer. This indicates that the data has arrived at the local machine but has not been read by the application yet.
So the problem should not be found inside Redis but in the application(or server) that is consuming Redis.