zoukankan      html  css  js  c++  java
  • 【转载】SpringCloud-Eurek 心跳阈值说明

    在使用eureka过程中,查看监控界面,出现:

    EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. 
    RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.


    Renews threshold:server期望在每分钟中收到的心跳次数 
    Renews (last min):上一分钟内收到的心跳次数。

    自我保护机制的工作机制是如果在15分钟内超过15%(100%-85%)的客户端节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,

    Eureka Server自动进入自我保护机制

    Eurake有一个配置参数eureka.server.renewalPercentThreshold,定义了renews 和renews threshold的比值,默认值为0.85。可以修改这个参数

    这里涉及三个方面:

    1. Eureka server和client之间每隔30秒会进行一次心跳通信,告诉server,client还活着。

    2. 默认情况下,如果Eureka Server在一定时间内(默认90秒)没有接收到某个微服务实例的心跳,Eureka Server将会移除该实例。

    3. 如果在15分钟内超过15%(100%-85%)的客户端节点都没有正常的心跳,则自动进入自我保护机制

     

    自我保护机制时会出现以下几种情况:

    1、Eureka Server不再从注册列表中移除因为长时间没收到心跳而应该过期的服务。

    2、Eureka Server仍然能够接受新服务的注册和查询请求,但是不会被同步到其它节点上,保证当前节点依然可用。

    3、当网络稳定时,当前Eureka Server新的注册信息会被同步到其它节点中

    stackoverflow上看到一个解释的比较清楚的:
    https://stackoverflow.com/questions/33921557/understanding-spring-cloud-eureka-server-self-preservation-and-renew-threshold#

    每个实例都需要将其租约更新到Eureka Server,频率为每30秒一次,可以在其中定义eureka.instance.leaseRenewalIntervalInSeconds。
    
    续订(最后一分钟):表示在最后一分钟从Eureka实例收到的续订数量
    
    续订阈值:Eureka服务器预期每分钟从Eureka实例收到的续订。
    
    例如,如果registerWithEureka设置为false,eureka.instance.leaseRenewalIntervalInSeconds则设置为30并运行2 Eureka实例。两个Eureka实例每分钟将向Eureka服务器
    发送4次更新,Eureka服务器最小阈值为1(用代码编写),因此阈值为5(这个数字将乘以一个因子eureka.server.renewalPercentThreshold,稍后将讨论)。
    问题1: SELF PRESERVATION MODE旨在避免网络连接故障。Eureka实例A和B之间的连接很好,但是由于连接问题,B很难在短时间内将租约更新到Eureka服务器,此时Eureka服务器不能简单地启动实例B.如果是,则实例尽管B可用,但无法从Eureka服务器获得注册服务。所以这就是SELF PRESERVATION MODE的目的,最好将其打开。 问题2: 最小阈值1写在代码中。registerWithEureka设置为false,因此没有Eureka实例寄存器,阈值将为1。 在生产环境中,通常我们部署两个Eureka服务器并将registerWithEureka设置为true。所以门槛将是2,Eureka服务器将续租两次/分钟,所以RENEWALS ARE LESSER THAN THRESHOLD不会有问题。 问题3: 你是对的。eureka.instance.leaseRenewalIntervalInSeconds定义每分钟发送到服务器的续订次数,但它将乘以eureka.server.renewalPercentThreshold上面提到的因子,默认值为0.85。 问题4: 是的,这是正常的,因为阈值初始值设置为1.因此,如果registerWithEureka设置为false,则续订总是低于阈值。 我有两个建议: 部署两台Eureka服务器并启用registerWithEureka。 如果您只想在demo / dev环境中部署,则可以设置eureka.server.renewalPercentThreshold为0.49,因此当您单独启动Eureka服务器时,阈值将为0。

    可参考文章:

    http://www.cnblogs.com/bjlhx/p/8903006.html

  • 相关阅读:
    http 请求中 缓存 的使用
    charles 中advance repeat(并发请求)
    charles 中 breakingpoint setting 、breakpoints(断点设置打断点)
    (剑指offer) 用两个栈来实现一个队列
    ios系统在h5页面下拉上拉会带动整个webview 出现空白
    (剑指offer)从尾到头打印链表js
    二维数组中的查找
    导航栏吸顶效果
    js归并排序的实现
    vue项目切换不同的tabbar显示不同的内容
  • 原文地址:https://www.cnblogs.com/yingsong/p/9962496.html
Copyright © 2011-2022 走看看