zoukankan      html  css  js  c++  java
  • 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.

    在8762和8763端口启动两个client,关停了其中一个8762的client,再次访问注册中心时,界面上显示了红色粗体警告信息:

    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.

    Eureka server和client之间每隔30秒会进行一次心跳通信,告诉server,client还活着。由此图中几个名词需要解释一下:
    Renews threshold:server期望在每分钟中收到的心跳次数 。
    Renews (last min):上一分钟内收到的心跳次数。

    产生原因

    报红的原因是因为Eureka进入了自我保护机制,默认情况下,如果EurekaServer在一定时间内没有接收到某个微服务实例的心跳时,EurekaServer将会注销该实例(默认90s)。但是当网络发生故障时,微服务与EurekaServer之间无法通信,这样就会很危险了,因为微服务本身是很健康的,此时就不应该注销这个微服务,而Eureka通过自我保护机制来预防这种情况(也就是不会注销任何微服务)。

    如何解决Eureka Server不踢出已关停的节点的问题

    在开发过程中,我们常常希望Eureka Server能够迅速有效地踢出已关停的节点,但是新手由于Eureka自我保护模式,以及心跳周期长的原因,常常会遇到Eureka Server不踢出已关停的节点的问题。解决方法如下:

    (1) Eureka Server端:配置关闭自我保护,并按需配置Eureka Server清理无效节点的时间间隔。

    eureka.server.enable-self-preservation    # 设为false,关闭自我保护
    eureka.server.eviction-interval-timer-in-ms # 清理间隔(单位毫秒,默认是60*1000)

    (2) Eureka Client端:配置开启健康检查,并按需配置续约更新时间和到期时间。

    eureka.client.healthcheck.enabled    # 开启健康检查(需要spring-boot-starter-actuator依赖)
    eureka.instance.lease-renewal-interval-in-seconds    # 续约更新时间间隔(默认30秒)
    eureka.instance.lease-expiration-duration-in-seconds # 续约到期时间(默认90秒)

    示例:

    服务器端配置:

    eureka:
        server:
          enable-self-preservation: false
          eviction-interval-timer-in-ms: 4000        

    客户端配置:

    eureka:
      client:
        healthcheck:
          enabled: true
      instance:
        lease-expiration-duration-in-seconds: 30 
        lease-renewal-interval-in-seconds: 10

    注意:
    更改Eureka更新频率将打破服务器的自我保护功能,生产环境下不建议自定义这些配置。

  • 相关阅读:
    webpack前端构建工具学习总结(一)之webpack安装、创建项目
    当执行 import vue from 'vue' 时发生了什么?
    WEBSTORM新建VUE类型文件设置
    基于vue-cli搭建HelloWorld项目
    vue-cli脚手架安装
    浏览器的重绘和回流
    strcpy和strncpy用法和区别
    &与&&有什么区别?
    状态机实践入门
    12864点阵液晶显示模块的原理和实例程序(HJ12864M-1)
  • 原文地址:https://www.cnblogs.com/zjfjava/p/12153130.html
Copyright © 2011-2022 走看看