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.
启动两个client,过了一会,停了其中一个,访问注册中心时, Spring Eureka 界面上显示了红色粗体警告信息: 表面意思大致是: Eureka可能不正确地去声明这些实例在不在的情况,由于小于阈值,因此不会为了安全将实例过期掉。 查阅了很多资料,终于了解了中间的问题。现将理解整理如下: Eureka server和client之间每隔30秒会进行一次心跳通信,告诉server,client还活着。由此引出两个名词: Renews threshold:server期望在每分钟中收到的心跳次数 Renews (last min):上一分钟内收到的心跳次数。 前文说到禁止注册server自己为client,不管server是否禁止,阈值(threshold)是1。client个数为n,阈值为1+2*n(此为一个server且禁止自注册的情况) 如果是多个server,且开启了自注册,那么就和client一样,是对于其他的server来说就是client,是要*2的 我开了一个server,自注册,相关数据如下 : Eurake有一个配置参数eureka.server.renewalPercentThreshold,定义了renews 和renews threshold的比值,默认值为0.85。当server在15分钟内,比值低于percent,即少了15%的微服务心跳