csredis icon indicating copy to clipboard operation
csredis copied to clipboard

socket error

Open ofirgeller opened this issue 10 years ago • 2 comments

any idea what is the reason for this?

i am creating a new csRedis client for every request. is this a bad practice? i know clients like SE.redis reuse the connection. but the examples on this repo show the using statement so that is what i did.

System.Net.Sockets.SocketException (0x80004005): Only one usage of each socket address (protocol/network address/port) is normally permitted 191.234.53.96:6379 at System.Net.Sockets.Socket.Connect(IPAddress[] addresses, Int32 port) at System.Net.Sockets.Socket.Connect(String host, Int32 port) at System.Net.Sockets.Socket.Connect(EndPoint remoteEP) at CSRedis.Internal.RedisConnector.Connect() at CSRedis.Internal.RedisConnector.Call[T](RedisCommand1 command) at CSRedis.RedisClient.Write[T](RedisCommand1 command) at Common.Cache.csRedis.AddStringToCache(String key, String value, Nullable`1 minutes)

ofirgeller avatar Sep 04 '14 01:09 ofirgeller

CSRedis does not (yet) use connection pooling, so it sounds like you are exhausting your ephemeral port range with many closed connections hanging around in the TIME_WAIT state, which according to this old blog post is 240 seconds.

For now, you can try reusing a shared (static) csredis instance with the Async methods and Reconnect enabled. Meanwhile I'll investigate connection pooling.

ctstone avatar Sep 05 '14 12:09 ctstone

I will try that, any thing to be careful of?

ofirgeller avatar Sep 05 '14 13:09 ofirgeller