TiKV 中Raft Election Timeout 默认是10s?

Raft 论文中建议Election Timeout 在150ms和300ms范围随机选择一个值。

通过查看TiKV相关参数发现: TiKV Raft group Leader 每个2s发送一个心跳

raft-base-tick-interval (default 1)* raft-heartbeat-ticks (default 2) 时间发送一次心跳

Follower在10s内没有收到心跳则,转换为Candidate发起投票。 raft-election-timeout-ticks 默认为10s

发起选举时经过的 tick 个数,即如果处于无主状态,大约经过 raft-base-tick-interval * raft-election-timeout-ticks 时间以后发起选举。

是这样吗?

1赞

是的。官网中 https://pingcap.com/docs-cn/v3.0/reference/configuration/tikv-server/configuration-file/#raft-election-timeout-ticks 也有介绍。

具体一点,应该是raft-min-election-timeout-ticksraft-max-election-timeout-ticks之间随机选择一个值作为election timeout时间,这两个参数默认值应该是10s和20s。在3.0以前的版本,raft模块是单线程的,为了防止region过多的情况下不稳定,所以该默认值偏大。由于3.0中raft模块改为线程池了,所以该值在3.0版本后可以适当设置小点,我测试过6~8s,平均800bytes的key和500bytes的value,200亿数据,万级别的OPS,没有发现不稳定的现象。

4赞