我正在测试一个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)
为什么是默认配置,看起来很奇怪,因为它会不断产生警告!
如果有人可以给我解释。我想我错过了什么......
答案 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)
以下是一些细节:
您可以找到允许在下面的此文件中显示消息的测试。
的价值 &#34; isBelowRenewThresold&#34;来自以下代码:
model.put(&#34; isBelowRenewThresold&#34;,registry.isBelowRenewThresold()== 1);
可以在以下文件中找到调用的方法:
感谢您的帮助。
此致 斯蒂芬
答案 2 :(得分:0)
遇到同样的问题,我在application.properties中尝试过。
eureka.client.lease.duration=10
eureka.instance.leaseRenewalIntervalInSeconds=5
eureka.instance.leaseExpirationDurationInSeconds=2