Java 尤里卡租赁续约如何运作?

Java 尤里卡租赁续约如何运作?,java,spring,netflix-eureka,spring-cloud-netflix,Java,Spring,Netflix Eureka,Spring Cloud Netflix,我有一个Eureka服务器和一个Eureka客户端。在客户端的bootstrap.properties中,我有以下配置: eureka.instance.leaseRenewalIntervalInSeconds=240 eureka.instance.leaseExpirationDurationInSeconds=240 我的理解是,客户端将每240秒向服务器发送一次心跳信号。如果在240秒内没有检测到心跳信号,它将再等待240秒。如果仍然没有收到心跳信号,它将注销客户端 但是,我观察到,

我有一个Eureka服务器和一个Eureka客户端。在客户端的bootstrap.properties中,我有以下配置:

eureka.instance.leaseRenewalIntervalInSeconds=240
eureka.instance.leaseExpirationDurationInSeconds=240
我的理解是,客户端将每240秒向服务器发送一次心跳信号。如果在240秒内没有检测到心跳信号,它将再等待240秒。如果仍然没有收到心跳信号,它将注销客户端

但是,我观察到,当我手动停止客户端时,Eureka仪表板会立即显示客户端已关闭,而无需等待240秒。我希望在仪表板发现客户机停机之前至少延迟240秒。有人能解释为什么会发生这种情况,以及我如何获得我提到的行为吗?

Discovery client(Eureka client)在关机期间从Eureka server注销自身。这就是为什么您的实例在关闭时会立即从Eureka服务器的仪表板中消失

不幸的是,据我所知,没有任何属性可以禁用此行为

但您应该记住,Eureka服务器的仪表板显示已注册实例的当前状态。但Eureka服务器的API有自己的响应缓存。这意味着,即使您的仪表板没有显示您关闭的实例,API的响应也可能在缓存期间包含您关闭的实例信息

您可以使用以下属性调整此服务器缓存周期。默认值为30秒

eureka.server.responseCacheUpdateInvervalMs
PS1)更改
eureka.instance.leaseRenewalIntervalInSeconds
值会产生一些副作用。一些eureka服务器代码假定为30秒。如果更改此属性,自我保护模式可能无法正常工作


PS2)Eureka客户端也有自己的缓存。因此,Eureka客户端还需要一些时间才能识别实例的消失。

如果您希望它再等待240秒,请进行以下更改Eureka.instance.leaseExpirationDurationInSeconds=480