etcd 参数优化

发布时间 2023-06-29 11:48:03作者: 鱼丸粗面没鱼丸

heartbeat-interval

目前 heartbeat-interval 使用默认值 即100 , 较小的心跳间隔会导致发送频繁的消息,消耗 CPU 和网络资源。而较大的心跳间隔,又会导致检测到 Leader 故障不可用耗时过长,影响业务可用性。我们可以将其优化为300 

election-timeout

目前 election-timeout 使用默认值 即1000 election-timeout至少为heartbeat-interval的10倍 因此需要调整为 3000

snapshot-count

snapshot-count 值过大它会消耗较多内存,过小则的话在某节点数据落后时,如果它请求同步的日志条目 Leader 已经压缩了,此时我们就不得不将整个 db 文件发送给落后节点,然后进行快照重建。快照重建是极其昂贵的操作,对服务质量有较大影响,因此我们需要尽量避免快照重建。etcd 3.2 版本之前 snapshot-count 参数值是 1 万,比较低,短时间内大量写入就较容易触发慢的 Follower 节点快照重建流程。etcd 3.2 版本后将其默认值调大到 10 万,可以将该参数调整为默认值即10万。(tcs存在一行log数据量过大的问题 如果改成10w可能会导致内存占用过大 暂时维持1w)

quota-backend-bytes

目前设置为 32g 比较大 可以调整为社区的推荐值 8g 防止db文件过大导致的一系列问题(如 etcd启动时间过长 等)

logger

目前为默认值 不开启 trace日志 可以设置为zap 开启trace日志 可以查看etcd请求流程各个阶段的耗时情况 便于排查问题

 

参数优化汇总

--heartbeat-interval=300 (当前为默认值 100)

--election-timeout=3000(当前为默认值 1000)

--quota-backend-bytes=8589934592 (当前值为 34359738368)

--logger=zap (当前不开启trace日志)

--metrics=extensive 

GODEBUG:madvdontneed=1