etcd 《二》

绩效

我应该如何对etcd进行基准测试?
试试基准测试工具。当前的基准测试结果可供比较。

etcd警告 "应用条目耗时过长 "是什么意思?
在大多数etcd成员同意提交请求后,每个etcd服务器将请求应用于其数据存储,并将结果持久化到磁盘。即使是慢速的机械磁盘或虚拟化的网络磁盘,如亚马逊的EBS或谷歌的PD,应用一个请求的时间通常应少于50毫秒。如果平均应用时间超过100毫秒,etcd将警告说条目应用时间过长。

通常情况下,这个问题是由缓慢的磁盘引起的。磁盘可能正在经历etcd和其他应用程序之间的竞争,或者磁盘的速度太慢(例如,一个共享的虚拟化磁盘)。为了排除导致该警告的慢速磁盘,监控backend_commit_duration_seconds(p99持续时间应小于25ms)以确认磁盘是合理的快速。如果磁盘太慢,给etcd分配一个专用磁盘或使用更快的磁盘通常会解决这个问题。

第二个最常见的原因是CPU饿死了。如果对机器的CPU使用情况的监测显示使用率很高,可能没有足够的计算能力给etcd。将etcd移到专用机器上,增加进程资源隔离cgroups,或者将etcd服务器进程的优先级提高,通常可以解决问题。

访问太多密钥的昂贵的用户请求(例如,获取整个密钥空间)也会导致长时间的应用延迟。然而,每个请求访问少于几百个键,应该总是很好的。

如果上述建议都不能清除警告,请开一个问题,并提供详细的日志、监控、指标和可选的工作量信息。

etcd的警告 "未能按时发送心跳 "是什么意思?
etcd使用一个基于领导者的共识协议来实现一致的数据复制和日志执行。集群成员选出一个领导者,所有其他成员成为追随者。当选的领导者必须定期向其追随者发送心跳以维持其领导地位。如果在选举间隔内没有收到心跳,追随者会推断领导者失败,并触发选举。如果领导者没有及时发送心跳,但仍在运行,那么选举是虚假的,可能是由资源不足引起的。为了捕捉这些软故障,如果领导者跳过两个心跳间隔,etcd将警告它未能及时发送心跳。

通常情况下,这个问题是由慢速磁盘引起的。在领导者发送附有元数据的心跳之前,它可能需要将元数据持久化到磁盘上。磁盘可能在etcd和其他应用程序之间遇到了争夺,或者磁盘太单纯的慢(例如,一个共享的虚拟化磁盘)。为了排除一个慢的磁盘导致这个警告,监控wal_fsync_duration_seconds(p99持续时间应该小于10ms)以确认磁盘是合理的快。如果磁盘太慢,给etcd分配一个专用磁盘或使用更快的磁盘通常会解决这个问题。要判断一个磁盘是否足够快,可以使用一个基准测试工具,如fio。请阅读这里的例子。

第二个最常见的原因是CPU饿死了。如果对机器的CPU使用情况的监测显示使用率很高,那么可能没有足够的计算能力给etcd。将etcd移到专用机器上,用cgroups增加进程资源隔离,或者将etcd服务器进程重新划分为更高的优先级,通常可以解决这个问题。

缓慢的网络也会导致这个问题。如果etcd机器之间的网络指标显示长延迟或高掉线率,可能没有足够的网络容量给etcd。将etcd成员移到一个不那么拥挤的网络上,通常会解决这个问题。然而,如果etcd集群是跨数据中心部署的,那么成员之间的长延时是可以预期的。对于这样的部署,调整心跳间隔配置,使之与机器之间的往返时间大致匹配,并将选举超时配置调整为至少5*心跳间隔。详细的信息请看调整文档。

如果上述建议都不能清除警告,请打开一个问题,提供详细的日志、监控、指标和可选的工作负载信息。

etcd警告 "snapshotting is taking more than x seconds to finish ... "是什么意思?
etcd发送其完整键值存储的快照,以刷新慢速跟随者并进行备份。缓慢的快照传输时间会增加MTTR;如果集群正在以高吞吐量摄取数据,缓慢的跟随者可能会因为在完成接收快照之前需要一个新的快照而陷入僵局。为了捕捉缓慢的快照性能,当发送快照的时间超过30秒且超过1Gbps连接的预期传输时间时,etcd会发出警告。 使用www.DeepL.com/Translator翻译(免费版)

posted @ 2022-09-29 21:33  风在何方  阅读(98)  评论(0编辑  收藏  举报