首页 > 其他分享 >etcd 《二》

etcd 《二》

时间:2022-09-29 21:46:40浏览次数:44  
标签:快照 领导者 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翻译(免费版)

标签:快照,领导者,etcd,心跳,磁盘,警告
From: https://www.cnblogs.com/ben-zhou/p/16743174.html

相关文章

  • 导出etcd中的kubernetes配置信息
    功能描述kubernetes的持久化机制是通过etcd实现的,即所有的配置信息会存储到etcd中。所以如果想要备份kubernetes中的集群配置信息,只要备份etcd的数据即可。本文将描述如何......
  • etcd从入门到入睡(Go语言客户端)
    安装etcd这里我使用的Docker安装,命令如下:dockerpullquay.io/coreos/etcd:v3.5.1或者参考此篇使用预编译好的二进制执行文件,指路:etcd安装。搭建etcd集群这里我使用do......
  • etcd集群部署文档
    1.部署的服务器ip地址172.16.0.151172.16.0.173172.16.0.2202.etcd版本 wgethttps://github.com/etcd-io/etcd/releases/download/v3.5.0/etcd-v3.5.0-li......
  • etcd 部署
    部署 mkdir-petcd/cdetcd/#下载etcdwgethttps://github.com/etcd-io/etcd/releases/download/v3.3.13/etcd-v3.3.13-linux-amd64.tar.gz#把etcd压到一个本地......
  • go etcd clientV3 带tls demo
    go操作etcdV3终端操作etcd链接:https://www.cnblogs.com/zisefeizhu/p/15427799.html安装etcdclientV3$getgo.etcd.io/etcd/clientv3#github.com/c......
  • etcd技术内幕 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/10o1Ka3pNhTLrcLf6wPgF9Q点击这里获取提取码 etcd是一个可靠的分布式KV存储产品,由CoreOS公司开发,其底层使用Raft算法保证一......
  • 长篇图解etcd核心应用场景及编码实战
    大家好啊,我是字母哥,今天写一篇关于etcd的文章,其实网上也有很多关于etcd的介绍,我就简明扼要,总结提炼,期望大家通过这一篇文章掌握etcd的核心知识以及编码技能!本文首先用大......
  • NetCDF库编译安装
    1. 准备系统环境,全部是deepin系统自带,并无单独安装deepin20.6gcc8.3.0g++8.3.0cmake3.22.1 netcdf安装版本:此次使用最新4.9.0,系统为deepin20.6,大于4.3.0源......
  • etcd 集群部署
         mkdir-p/etc/etcd/data/etcdgroupadd-f-g1501etcduseradd-c"etcduser"-d/data/etcd-s/bin/false-getcd-u1501etcdchown-Retcd:e......
  • etcd——源码编译、学习
    借一张图 1、下载https://github.com/etcd-io/etcdgitclone https://github.com/nats-io/nats-server.git 2、编译进入etcd目录, mac/linux下,  makeclea......