Spring Cloud Eureka 自我保护机制(EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY)

在本地启动一个Euraka-Server服务(服务注册中心)和一个Euraka-Client服务(服务注册者-应用服务)两个服务。过了一会儿后,在Euraka-Server界面显示: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.

 了解Euraka自我保护机制

服务注册到Euraka Server之后,会维护一个心跳连接,告诉Euraka Server自己还活着。Euraka Server在运行期间,会统计心跳失败的比例在15分钟内是否低于85%,如果出现低于的情况(在单机调试的时候很容易满足,在生产环境上通常是由于网络不稳定导致),Euraka Server会将当前的实例注册信息保存起来,让这些实例不会过期尽可能的保护这些注册信息。但是在保护期内如果服务刚好这个服务提供者非正常下线了,此时服务消费者就会拿到一个无效的服务实例,此时会调用失败,对于这个问题需要服务消费者端要有一些容错机制,如重试,断路器等。

Euraka自我保护机制开关

通过配置

eureka.server.enable-self-preservation=false;参数来关闭保护机制,以确保注册中心可以将不可用的实例正确剔除,默认为true。

 

自我保护模式被激活的条件

转载  https://blog.csdn.net/qq_2300688967/article/details/80855106

是在 1 分钟后,Renews (last min) < Renews threshold

这两个参数的意思:

  • Renews thresholdEureka Server 期望每分钟收到客户端实例续约的总数
  • Renews (last min):Eureka Server 最后 1 分钟收到客户端实例续约的总数

具体的值,我们可以在 Eureka Server 界面可以看到:

 调整服务续约配置

  1. instance的心跳间隔秒数:eureka.instance.lease-renewal-interval-in-seconds=30
  2. 服务失效时间:eureka.instance.lease-expiration-duration-in-seconds=90
  3. 自我保护系数:eureka.server.renewal-percent-threshold=0.85
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值