【问题标题】:Renews threshold and Renews (last min)续订阈值和续订(最后一分钟)
【发布时间】:2016-05-12 17:52:13
【问题描述】:

我正在测试一个 spring-cloud eureka 服务器和客户端。 我有一个关于默认配置(服务器和客户端)的简单问题。

在服务器端,更新阈值等于 3。 在客户端,它每 30 秒发送一次心跳(每分钟最多 2 次)。

当我查看注册表仪表板时,当waitTimeInMswhenSyncEmpty 结束时,我看到以下警告消息:

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

当我查看代码时,测试getNumOfRenewsInLastMin() <= numberOfRenewsPerMinThreshold 始终为真(2 <= 3)

为什么是默认配置,看起来怪怪的,因为它不断产生警告!

如果有人可以给我一个解释。我想我错过了什么……

【问题讨论】:

  • 我看到numberOfRenewsPerMinThreshold > 0 && getNumOfRenewsInLastMin() > numberOfRenewsPerMinThreshold。这适用于2 > 3 = false。你在看哪里? github.com/Netflix/eureka/blob/…
  • 方法 isBelowRenewThresold()(恕我直言,这是正确的)和 FTL 用法 之间可能存在问题。会不会是 FTL 使用了一种方法,该方法返回一个预期为布尔值的数字?
  • 对不起,请忽略我最后的回答。它似乎工作正常。我的尤里卡控制台显示更新(4)确实低于阈值(5)。由于我有 2 个客户,更新通常为 4。最大的问题是,为什么阈值大于预期的更新?这似乎也是这个问题的情况

标签: spring-cloud netflix-eureka


【解决方案1】:

遇到同样的问题,我在 application.properties 中尝试过。

eureka.client.lease.duration=10    
eureka.instance.leaseRenewalIntervalInSeconds=5    
eureka.instance.leaseExpirationDurationInSeconds=2 

【讨论】:

    【解决方案2】:

    我有同样的问题,并进行了一些调查。警告消息的根本原因是更新正好比阈值低 1。

    当你启动一个普通的 eureka 服务器并且没有注册任何客户端时会发生这种情况。它将在更新阈值处获得 1。 当您现在注册一个客户端时,来自客户端的 2 只是添加到已经存在的那个中。因此,现在将续订阈值设为 3,这比一个客户所能获得的续订要高。等待几分钟(约 4 分钟),就会出现警告。

    我的 application.yml 是:

    spring:
      application:
        name: service-registry
    server:
      port: 8761
    eureka:
      instance:
        hostname: localhost
      client:
        registerWithEureka: false
        fetchRegistry: false
        serviceUrl:
              defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    

    我正在使用 Brixton.RC1。

    在同一主题中找到另外两个 SQ 问题:

    Understanding Spring Cloud Eureka Server self preservation and renew threshold

    Spring Eureka server shows RENEWALS ARE LESSER THAN THE THRESHOLD

    【讨论】:

      【解决方案3】:

      这里有一些细节:

      您可以在下面找到允许在此文件中显示消息的测试。

      https://github.com/spring-cloud/spring-cloud-netflix/blob/master/spring-cloud-netflix-eureka-server/src/main/resources/templates/eureka/navbar.ftl

      的价值 “isBelowRenewThresold”来自以下代码:

      model.put("isBelowRenewThresold", registry.isBelowRenewThresold() == 1);

      调用的方法可以在以下文件中找到:

      https://github.com/Netflix/eureka/blob/master/eureka-core/src/main/java/com/netflix/eureka/registry/PeerAwareInstanceRegistryImpl.java

      感谢您的帮助。

      问候, 斯蒂芬

      【讨论】:

        猜你喜欢
        • 2018-07-04
        • 2016-12-26
        • 2020-04-26
        • 1970-01-01
        • 1970-01-01
        • 2019-04-04
        • 2013-10-18
        • 1970-01-01
        • 2015-02-27
        相关资源
        最近更新 更多