redis的repl-ping-slave-period和repl-ping-replica-period

網上不少Redis方面的文章,會涉及到repl-ping-slave-periodrepl-ping-replica-period這兩個重要參數,從一些中文解釋來看,意思差很少,即:SLAVE週期性的ping MASTER間隔,可直接理解成SLAVE -> MASTER間的心跳間隔(注意箭頭方向)。node

 

沒有一篇文章同時提取這二者,老是分開出如今不一樣文章中。在官方的配置文件redis.conf5.0版本以前的均使用repl-ping-slave-period,而從5.0開始變成了repl-ping-replica-period,也就是說這兩個實際上是同一個東西。實際上由於一些非技術緣由,不少軟件將slave改爲了replicaRedis也一樣如此,因此replicaslave徹底相同的。git

爲了兼容,5.0同時支持兩種用法(其它配置項也一樣命運,如:slaveof改爲了replicaof):github

        } else if ((!strcasecmp(argv[0],"repl-ping-slave-period") ||redis

                    !strcasecmp(argv[0],"repl-ping-replica-period")) &&網站

                    argc == 2)spa

        {server

            server.repl_ping_slave_period = atoi(argv[1]);ci

            if (server.repl_ping_slave_period <= 0) {文檔

                err = "repl-ping-replica-period must be 1 or greater";get

                goto loaderr;

            }

        }

 

經常使用命令變化,但5.0仍然兼容的配置項(實際上全部的slave都改爲了replica,包括一些官方網站的文檔,不過代碼中的變量名保持未變,仍就爲slave):

<5.0版本

>=5.0版本

repl-ping-slave-period

repl-ping-replica-period

slaveof

replicaof

slave-priority

replica-priority

slave-read-only

replica-read-only

slave-serve-stale-data

replica-serve-stale-data

cluster-slave-validity-factor

cluster-replica-validity-factor

 

配置項說明(注意命名包含cluster的爲集羣專有配置項):

 

默認值

單位

 

repl-ping-replica-period

10

定義心跳(PING)間隔。

repl-timeout

60

這個參數必定不能小於repl-ping-replica-period,能夠考慮爲repl-ping-replica-period的3倍或更大。定義多長時間內均PING不通時,斷定心跳超時。對於redis集羣,達到這個值並不會發生主從切換,主從什麼時候切換由參數cluster-node-timeout控制,只有master狀態爲fail後,它的slaves才能發起選舉。

cluster-node-timeout

15000

毫秒

集羣中的節點最大不可用時長,在這個時長內,不會被斷定爲fail。對於master節點,當不可用時長超過此值時,它slave在延遲至少0.5秒後會發起選舉進行failover成爲master。Redis集羣的不少其它值與cluster-node-timeout有關。

cluster-slave-validity-factor

10

 

若是設置爲0,則slave老是嘗試成爲master,不管slave和master間的連接斷開時間的長短。若是是一個大於0的值,則最大可斷開時長爲:(cluster-slave-validity-factor * cluster-node-timeout)。例如:當cluster-node-timeout值爲5,cluster-slave-validity-factor值爲10時,slave和master間的鏈接斷開50秒內,slave不會嘗試成爲master。

 

repl-timeoutcluster-node-timeout的區別:

 

默認值

單位

 

repl-timeout

60

決定複製超時,並不能決定slave發起選舉,也不決定master什麼時候爲fail

cluster-node-timeout

15000

毫秒

決定master什麼時候爲fail,在fail後,slave會發起選舉

相關文章
相關標籤/搜索