I'm using a Valkey ElastiCache with StackExchange.Redis on .NET. It's usually working but sometimes I'll get this message:
The message timed out in the backlog attempting to send because no connection became available (5000ms) -
Last Connection Exception: SocketClosed on <myelasticacheendpoint>/Interactive,
Idle/MarkProcessed, last: INFO, origin: ReadFromPipe, outstanding: 0, last-read: 0s ago, last-write: 12s ago, keep-alive: 60s,
state: ConnectedEstablished, mgr: 8 of 10 available, in: 0, last-heartbeat: 0s ago, last-mbeat: 0s ago, global: 0s ago, v: 2.8.31.52602,
command=GET, timeout: 5000, inst: 0, qu: 1, qs: 0, aw: False, bw: SpinningDown, last-in: 0, cur-in: 0, sync-ops: 22, async-ops: 0,
serverEndpoint: <myelasticacheendpoint>, conn-sec: n/a, aoc: 1, mc: 1/1/0, mgr: 10 of 10 available,
clientName: 94abce17895e(SE.Redis-v2.8.31.52602),
IOCP: (Busy=0,Free=1000,Min=1,Max=1000),
WORKER: (Busy=1,Free=32766,Min=4,Max=32767),
POOL: (Threads=5,QueuedItems=0,CompletedItems=1357296,Timers=106),
v: 2.8.31.52602
(Please take a look at this article for some common client-side issues that can cause timeouts: .Redis/Timeouts
As you can see my busy threads are all under the min. The qs
is 0. The state is ConnectedEstablished
. What could be causing this issue?
The ElastiCache is in two regions, so I fetch the cache configuration details using DescribeServerlessCachesAsync
, use _databaseConnection = ConnectionMultiplexer.Connect(configurationOptions);
to connect, _databaseConnection.GetDatabase(0)
to get the database, and then _databaseConnection.StringGet(myKey)
to get my value