Closed apgk closed 2 years ago
今天再次使用netstat 查看了端口,发现出现状态不可用后,会把上次的端口连接存在,服务器查看到还有链接连着,图片地址: https://github.com/apgk/test/blob/master/redis.png
使用的是单例吗,怎么初始化 CSRedisClient 的
使用的是单例吗,怎么初始化 CSRedisClient 的
public class redishelper{ private CSRedis.CSRedisClient client; public redishelper(){ client = new CSRedis.CSRedisClient($"{ip}:{port},defaultDatabase={dbId},poolsize=5,prefix={prefixKey}");
RedisHelper.Initialization(client);
}
public T Read
全局就new 了一个,静态 方式
public static redishelper helper=new redishelper();
本地端口被占用完,最大的可能性是重复创建了 CSRedisClient 对象。
搜索项目内 CSRedisClient 代码,创建时加日志记录。
本地端口被占用完,最大的可能性是重复创建了 CSRedisClient 对象。
搜索项目内 CSRedisClient 代码,创建时加日志记录。
不存在的,因为是后台服务只有在 初始化地方new 了一个,所有代码再也没有地方new 了。但是服务那条专线感觉不是非常稳定,一段时间就会出现断线下,然后就会出现 连接不上,服务器就会多一个链接
是否使用了订阅功能,或者统计一下总共用了哪些功能。
是否使用了订阅功能,或者统计一下总共用了哪些功能。
没有哦 ,全篇只有写入 ,少部分读取
是否使用了订阅功能,或者统计一下总共用了哪些功能。
我搞了一个单线程处理队列,一条条写入redis,这个时候发现连接不上服务器,就会抛错一直是状态不可用,持续一段时间后,再次联通,之前的5个链接就不可使用了,内部估计自动创建了新的连接,旧的5个连接服务器还是有保留。时间久了造成服务器端口耗尽。
按你的描述像是 socket 没有及时被释放端口,其实内部已经执行了 socket.Close/Dispose。
问题看上去和以前 HttpClient 有点像,系统层面是间隔一段时间才回收端口。
按你的描述像是 socket 没有及时被释放端口,其实内部已经执行了 socket.Close/Dispose。
问题看上去和以前 HttpClient 有点像,系统层面是间隔一段时间才回收端口。
所以有点搞不懂。两台客户端各自开5个连接到服务器 ,经常各自死连接,服务器连接又占着,从不释放。。。。
有没有办法判断这个状态 状态不可用,等待后台检查程序恢复方可使用。Connect to server timeout ---> CSRedis.Internal.IO.RedisSocketException: Connect to server timeout
你是说服务端不释放? 还是本地不释放?
服务端是指 redis-server ?
服务端是指 redis-server ? 是的,再次贴上图,能很好说明问题(发生这个连接数不对等,网络估计波动了好几次了) https://github.com/apgk/test/blob/master/redis.png
服务端就是安装redis 服务的那台服务器, 客户端就是上图 10.116.182.174 那台 ,看到实际只有5个链接 服务端看到10来个 连接
那说明 redis-server 未收到正确的断开通知。
你们用的专线,有可能是通过一个中转,真实连接 redis-server 是中间中转的服务器。
而其实只是你们本地与中转服务器断开了。
此时 redis-server 查询到的连接状态依然没有断开,是因为中转服务器并没有断开连接。
连接串加 preheat=1,可以缓解症状,但不能彻底解决问题。
这样解释明白了,现在 已经=2 了,再试试看吧,感谢大佬回复。
话说这问题解决了? @apgk
话说这问题解决了? @apgk
没这么快出来,这个问题测试基本要看半个月才会出结果,所以还得等等
目前问题解决,突然想到 redis 服务器是否有配置,右面发现默认 tcp-keepalive 0 直接不检测了,网络断开情况下,服务器连接默认还存活着。。。。。。
经常一段时间后就出现 状态不可用,实际原因是端口被占用满了(分配中的), 电脑已重启就好了。redis 自身打出来都是 状态不可用 netstat -ano 查看的话 端口基本没使用,6379 就开了5个,我只开5个连接