etcd报错failed to send out heartbeat on time

Posted sxlong_work

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了etcd报错failed to send out heartbeat on time相关的知识,希望对你有一定的参考价值。

 

etcd服务出现了以下报错
Mar 23 05:50:44 localhost etcd: failed to send out heartbeat on time (exceeded the 100ms timeout for 2.951502ms)

 

 心跳检测报错主要与以下因素有关(磁盘速度、cpu性能和网络不稳定问题):

第一,etcd使用了raft算法,leader会定时地给每个follower发送心跳,如果leader连续两个心跳时间没有给follower发送心跳,etcd会打印这个log以给出告警。通常情况下这个issue是disk运行过慢导致的,leader一般会在心跳包里附带一些metadata,leader需要先把这些数据固化到磁盘上,然后才能发送。写磁盘过程可能要与其他应用竞争,或者因为磁盘是一个虚拟的或者是SATA类型的导致运行过慢,此时只有更好更快磁盘硬件才能解决问题。etcd暴露给Prometheus的metrics指标wal fsync

duration_seconds就显示了wal日志的平均花费时间,通常这个指标应低于10ms。

第二种原因就是CPU计算能力不足。如果是通过监控系统发现CPU利用率确实很高,就应该把etcd移到更好的机器上,然后通过cgroups保证etcd进程独享某些核的计算能力,或者提高etcd的priority。

第三种原因就可能是网速过慢。如果Prometheus显示是网络服务质量不行,譬如延迟太高或者丢包率过高,那就把etcd移到网络不拥堵的情况下就能解决问题。但是如果etcd是跨机房部署的,长延迟就不可避免了,那就需要根据机房间的RTT调整heartbeat-interval,而参数election-timeout则至少是heartbeat-interval的5倍。

以上是关于etcd报错failed to send out heartbeat on time的主要内容,如果未能解决你的问题,请参考以下文章

配置redis集群报错Failed to send CLUSTER MEET command.

配置redis集群报错Failed to send CLUSTER MEET command.

FlinkFlink 写入 kafka 报错 Failed to send data to Kafka: Expiring 4 record(s) for 20001 ms has passed(代码

问题解决:Failed to start etcd.service: Unit is masked.

EasyRTC 通话报错 `Failed to execute ‘send‘ on ‘RTCDataChannel‘: RTCDataChannel.readyState is not ‘open‘`

Failed to reconcile etcd plane: Failed to add etcd member [etcd-server05] to etcd cluster