etcd读性能主要影响因素
1、Raft模块-线性读ReadIndex-节点之间的RTT延时、磁盘IO
线性读时Follower节点首先会向Raft 模块发送ReadIndex请求,此时Raft模块会先向各节点发送心跳确认,一半以上节点确认 Leader 身份后由leader节点将已提交日志索引 (committed index) 封装成 ReadState 结构体通过 channel 层层返回给线性读模块,并会 等待本节点状态机的已应用日志索引 (applied index) 大于等于 Leader 的已提交日志索引,才能继续将请求发送到MVCC模块,从而确保能在本节点状态机中读取到最新数据,
心跳确认会涉及到各个节点之间网络通信,因此各个节点之间的 RTT 延时是决定线性读 ReadIndex 性能的核心因素之一。
Follower节点应用已提交日志条目到状态机的过程涉及到写磁盘,因此磁盘 IO 性能还会影响读性能,线性读性能会随着写QPS的增加而快速下降。
2、MVCC模块-总key数、查询的key数、key大小
从 treeIndex 中获取整个查询涉及的 key 列表版本号信息时,影响其性能的关键因素是 treeIndex 的总 key 数、查询的 key 数、获取 treeIndex 锁的耗时。
大 key-value 的查询非常容易导致 etcd OOM、server 节点出现丢包、性能急剧下降。

etcd写性能主要影响因素
1、Quota模块-压缩策略
Quota模块会对db配额进行校验,etcd 支持按时间周期性压缩、按版本号压缩两种策略,建议压缩策略不要配置得过于频繁,比如如果按时间周期压缩,一般情况下 5 分

本文分析了etcd读写性能受Raft模块的RTT延时、磁盘I/O、MVCC模块的key数等因素影响,以及Quota模块的压缩策略、KVServer的磁盘IO和快照频率在写性能中的作用,同时提到了watcher数量对性能的影响。
最低0.47元/天 解锁文章
371

被折叠的 条评论
为什么被折叠?



