predixy icon indicating copy to clipboard operation
predixy copied to clipboard

info指令CurrentIsFail:1

Open amilytan opened this issue 5 years ago • 3 comments

redis_cluster版本:3.2.8 predixy版本:1.0.5

使用info命令查看信息,有已废弃旧节点信息,如下: Server:10.177.69.33:7007 Role:slave Group:6acd9f5faa9b6c8ba0333d6ff61bb2d26130757b DC: CurrentIsFail:1 Connections:18 Connect:3120467 Requests:143845428 Responses:133433951 SendBytes:9116791541 RecvBytes:377580000442

Server:10.177.69.33:7007 Role:slave Group:6a7150af4c5c2deeb49aa60ea4f27fd4646d352e DC: CurrentIsFail:1 Connections:18 Connect:4738940 Requests:2939784741 Responses:2929213105 SendBytes:203945547558 RecvBytes:3476735616546

predixy-log日志信息如下: 2020-06-11 01:38:47.720851 E Handler.cpp:435 h 10 s 10.177.69.33:7007 476 will be close with status 4 EventError 2020-06-11 01:38:47.720892 N Handler.cpp:265 server 10.177.69.33:7007 mark failure 2020-06-11 01:38:47.720914 N Handler.cpp:276 h 10 close s 10.177.69.33:7007 476 and c None -1 with status 4 EventError 2020-06-11 01:38:47.720976 E Handler.cpp:435 h 10 s 10.177.69.33:7006 457 will be close with status 4 EventError 2020-06-11 01:38:47.720983 N Handler.cpp:265 server 10.177.69.33:7006 mark failure 2020-06-11 01:38:47.720986 N Handler.cpp:276 h 10 close s 10.177.69.33:7006 457 and c None -1 with status 4 EventError

  1. 已废弃的节点曾经写在cluster.conf配置文件,已经从配置文件删除,可是info查看依旧存在旧节点信息,是否意味着,一旦配置文件的节点做改动,都需要重启predixy服务来释放呢?

  2. redis集群从节点扩容时,新的从节点还在LOADING Redis isloading the dataset in memory状态,这时predixy已经将请求分配至新节点,感觉没有完全做到扩容无感知。

麻烦帮忙看看,感激不尽!

amilytan avatar Jun 11 '20 06:06 amilytan

1、predixy不会移除曾经发现过的节点信息,但是它在失效状态并不会收到请求 2、有可能存在这种情况,但是几个请求后这个节点就会被标记为失效

fortrue avatar Jun 11 '20 07:06 fortrue

1、predixy不会移除曾经发现过的节点信息,但是它在失效状态并不会收到请求 2、有可能存在这种情况,但是几个请求后这个节点就会被标记为失效

冒昧问一下,会有可能对这两个方面做优化吗?

amilytan avatar Jun 11 '20 09:06 amilytan

1、predixy不会移除曾经发现过的节点信息,但是它在失效状态并不会收到请求 2、有可能存在这种情况,但是几个请求后这个节点就会被标记为失效

这种设计对于k8s下的高可用不友好。除非用插件给StatefulSet的Pod设置固定IP,否则每次redis Pod重启都会改变IP,很容积积攒大量无效IP。 在这种情况下,没有清理vector(上限128)中的无效server,最终会导致无法连接redis集群。

而固定Pod IP这种功能目前在阿里云k8s上还不支持。

我尝试做了一些修正,不过还没完全调试好,对于“无效”的判断不是太好做。因为每个节点返回的“有效”节点是不一样的。另一种思路是对于connect总是失败的服务addr,要把他从连接组中剔除。

arctan90 avatar Jul 22 '20 15:07 arctan90