Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理空闲的PUBSUB Redis连接_Redis_Stackexchange.redis_Redis Cluster - Fatal编程技术网

如何处理空闲的PUBSUB Redis连接

如何处理空闲的PUBSUB Redis连接,redis,stackexchange.redis,redis-cluster,Redis,Stackexchange.redis,Redis Cluster,我最近对我的Redis集群面临的一些问题进行了一些调查,发现我有许多连接仍然存在,尽管在一段时间后会无限期闲置 经过一些调查,我发现我的集群上有以下两个设置: timeout 300 tcp-keepalive 0 不会消失的陈旧连接是发布/订阅客户机连接(实际上是StackExchange.Redis客户机,但这并不重要),因此它们不尊重超时配置。因此,tcp keepalive似乎是唯一能够确保这些连接随着时间的推移得到清理的其他配置 因此,我将此设置应用于所有节点: redis-trib

我最近对我的Redis集群面临的一些问题进行了一些调查,发现我有许多连接仍然存在,尽管在一段时间后会无限期闲置

经过一些调查,我发现我的集群上有以下两个设置:

timeout 300
tcp-keepalive 0
不会消失的陈旧连接是发布/订阅客户机连接(实际上是StackExchange.Redis客户机,但这并不重要),因此它们不尊重超时配置。因此,tcp keepalive似乎是唯一能够确保这些连接随着时间的推移得到清理的其他配置

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

redis-trib.rb call 127.0.0.1:6001 config set tcp-keepalive 300
在这一点上,我回家了,第二天早上我回来了,假设陈旧的连接会得到妥善处理。不幸的是,我受到了同样的联系

我的问题是:Redis服务器端有没有办法在这些连接建立后优雅地处理它们?是否希望在连接建立和旧后应用tcp keepalive配置,而不会处理这些连接

除了重新启动Redis服务器之外,我找到的唯一解决方案是编写一点脚本并使用命令,这是可行的,但我希望基于配置的方法来处理这个问题


提前感谢您在这里提供的任何见解

是的,或者客户端应用程序应该关闭pub-sub连接,或者您可以使用“client kill-type-pubsub”命令client kill-type-pubsub杀死所有pubsub连接-我一直在寻找一种方法,只杀死那些过时且不仍然活动的连接。我的解决方案是编写一个快速脚本来解析客户端列表输出,查找大于X的空闲时间,并对其调用CLIENT KILL,而不是CLIENT KILL type pubsub,它会大量终止所有pubsub连接。如果时间大于X,您如何确定连接是否过期?Pubsub连接是持久的,因此它们不受超时参数的影响。通常,所有语言的所有活动客户端在连接终止时都会重新建立连接。因此,杀死所有的pubsub连接是一种简单的方法,可以达到预期的效果(几乎)