续订门槛和续订(最后一分钟)

时间:2016-02-03 13:38:20

标签: spring-cloud netflix-eureka

我正在测试一个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)

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

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

以下是一些细节:

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

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

的价值 &#34; isBelowRenewThresold&#34;来自以下代码:

model.put(&#34; isBelowRenewThresold&#34;,registry.isBelowRenewThresold()== 1);

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

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

感谢您的帮助。

此致 斯蒂芬

答案 2 :(得分:0)

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

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