如何处理空闲的PUBSUB Redis连接

时间:2018-04-06 16:04:30

标签: redis stackexchange.redis redis-cluster

我最近正在调查我在Redis集群上面临的一些问题,并发现尽管在一段时间后无限期闲置,我仍然有很多连接。

经过一番调查后,我发现我的群集中有这两个设置:

timeout 300
tcp-keepalive 0

不会消失的陈旧连接是PUB / SUB客户端连接(实际上是StackExchange.Redis客户端,但除此之外),因此它们不尊重超时配置。因此,tcp-keepalive似乎是唯一可以确保这些连接随着时间的推移得到清理的其他配置。

所以我将此设置应用于所有节点:

redis-trib.rb call 127.0.0.1:6001 config set tcp-keepalive 300

此时我回家了,第二天早上我回来了,假设陈旧的连接处理得当。可悲的是,我受到了所有相同的关系的欢迎。

我的问题是:Redis服务器端是否有任何方法可以在它们建立后优雅地处理这些连接?是否应该在建立连接后应用tcp-keepalive配置并且旧的不会被丢弃?

除了重新启动Redis服务器之外,我发现的唯一解决方案是执行一些脚本编写并使用CLIENT KILL命令,这是可行的,但我希望有一些基于配置的配置来处理这个问题。

提前感谢您的任何见解!

0 个答案:

没有答案