启动两个client,过了一会,停了其中一个,访问注册中心时,界面上显示了红色粗体警告信息:

查阅了很多资料,终于了解了中间的问题。现将理解整理如下:

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

前文说到禁止注册server自己为client,不管server是否禁止,阈值(threshold)是1。client个数为n,阈值为1+2n(此为一个server且禁止自注册的情况)
如果是多个server,且开启了自注册,那么就和client一样,是对于其他的server来说就是client,是要
2的

我开了两个server,自注册,相关数据如下
这里写图片描述
阈值:1+21
renews:
1)自注册 2 + 2
1
2)非自注册:2*1

Eurake有一个配置参数eureka.server.renewalPercentThreshold,定义了renews 和renews threshold的比值,默认值为0.85。当server在15分钟内,比值低于percent,即少了15%的微服务心跳,server会进入自我保护状态,Self-Preservation。在此状态下,server不会删除注册信息,这就有可能导致在调用微服务时,实际上服务并不存在。
这种保护状态实际上是考虑了client和server之间的心跳是因为网络问题,而非服务本身问题,不能简单的删除注册信息

stackoverflow上,有人给出的建议是:
1、在生产上可以开自注册,部署两个server
2、在本机器上测试的时候,可以把比值调低,比如0.49
3、或者简单粗暴把自我保护模式关闭

eureka.server.enableSelfPreservation=false

一、Eureka的自我保护模式
如果在Eureka Server的首页看到以下这段提示,则说明Eureka已经进入了保护模式: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.3
一般出现此模式时,服务返回错误。即如果真实的服务已经Down掉,但在注册中心界面服务却一直存在,且显示为UP状态。产生原因:Eureka Server在运行期间,会统计心跳失败的比例在15分钟之内是否
低于85%,如果出现低于的情况(在单机调试的时候很容易满足,实际在
生产环境上通常是由于网
络不稳定导致),Eureka Server会将当前的实例注册信息保护起来,同时提
示这个警告。保护模式主要用于一组客户端和Eureka Server之间存在网络分
区场景下的保护。一旦进入保护模式,Eureka Server将会尝试保护其服务注
册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)。
解决方法:详情可见上一篇博客,就不在这边赘述了。
1
如何处理服务挂掉后或者手动关闭服务后,Ribbon负载均衡还是一直调用这个服务:1.Hystrix,在fallback方法中shutdown指定的服务
2.让zuul只路由到活着的那个服务:
添加依赖:<dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>3.6.0</version></dependency>
配置文件:
ribbon.connectTimeout: 2000
ribbon.readTimeout: 10000
ribbon.maxAutoRetries: 1
ribbon.maxAutoRetriesNextServer: 2
ribbon.okToRetryOnAllOperations: true
ribbon.okhttp.enabled: true
3.重试机制(和上述一个道理)
spring.cloud.loadbalancer.retry.enabled=true
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000
hello-service.ribbon.ConnectTimeout=250
hello-service.ribbon.ReadTimeout=1000
hello-service.ribbon.OkToRetryOnAllOperations=true
hello-service.ribbon.MaxAutoRetriesNextServer=2
hello-service.ribbon.MaxAutoRetries=1spring.cloud.loadbalancer.retry.enabled:该参数用来开启重试机制,它默认是关闭的。这里需要注意,官方文档中的配置参数少了enabled
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds:断路器的超时时间需要大于ribbon的超时时间,不然不会触发重试。hello-service.ribbon.ConnectTimeout:请求连接的超时时间hello-service.ribbon.ReadTimeout:请求处理的超时时间hello-service.ribbon.OkToRetryOnAllOperations:对所有操作请求都进行重试hello-service.ribbon.MaxAutoRetriesNextServer:切换实例的重试次数hello-service.ribbon.MaxAutoRetries:对当前实例的重试次数
二、指定Eureka的Environment
eureka.environment: 指定环境
1
三、指定Eureka的DataCenter
eureka.datacenter: 指定数据中心
---------------------
作者:陆鹏nic.lu
来源:CSDN
原文:https://blog.csdn.net/cvntopuyef/article/details/78477681
版权声明:本文为博主原创文章,转载请附上博文链接!

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER相关推荐

  1. EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY‘RE NOT. RENEWALS ARE LESSER

    启动两个client,过了一会,停了其中一个,访问注册中心时,界面上显示了红色粗体警告信息: EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANC ...

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

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

  3. Spring Cloud(三):Eureka控制台参数说明

    1.HOME 进入Eureka控制台首页,首先看HOME页的头部 System Status Environment: 环境,默认为test,该参数在实际使用过程中,可以不用更改 Data cente ...

  4. SpringCloud(一):深入理解Eureka

    实例和客户端的元数据 Eureka Metadata for Instances and Clients 0.Eureka的元数据字面理解 原文: It is worth spending a bit ...

  5. Spring Cloud Eureka 自我保护机制

    Spring Cloud Eureka 自我保护机制 Eureka Server 在运行期间会去统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于 85%,Eureka Server 会将这 ...

  6. Spring Cloud中,Eureka常见问题总结

    Spring Cloud中,Eureka常见问题总结. 1 eureka.environment: 指定环境 参考文档: 1 eureka.datacenter: 指定数据中心 参考文档: 使用配置项 ...

  7. 【学习笔记】Eureka服务治理代码实例、相关配置和原理机制详解

    文章目录 代码示例 启动一个服务注册中心 注册服务提供者 高可用注册中心 服务的发现与消费 Eureka的一些配置 服务注册类配置 服务实例类配置 实例名配置 端点配置 Eureka服务治理基础架构原 ...

  8. 【Java进阶】Eureka讲解与应用

    Eureka[juˈriːkə] 简介 Eureka是Netflix服务发现的服务端与客户端,Eureka提供服务注册以及服务发现的能力,当是Eureka Server时(注册中心),所有的客户端会向 ...

  9. Eureka的服务自我保护

    一个名字叫SPRINGCLOUD-EUREKA-CONSUMER,一个名字叫SPRINGCLOUD-EUREKA-PROVIDER,然后后面显示的是服务的详细信息,他的IP,服务名称,以及端口,然后U ...

  10. Eureka服务注册中心---SpringCloud

    Eureka服务注册中心 5.1 什么是Eureka Netflix在涉及Eureka时,遵循的就是API原则. Eureka是Netflix的有个子模块,也是核心模块之一.Eureka是基于REST ...

最新文章

  1. 彭旭老师《项目管理中的领导力与团队建设》
  2. python 多线程ping测试_从线程ping多个ip时Python ICMP ping实现?
  3. 推荐干货 | 我在阿里做运营:八一八运营经典误区
  4. mysql简单部署_安装部署Mysql实例(最简单快速噢)
  5. Linux学习Vim使用及账号用户管理
  6. 抗击肺炎,中国互联网公司在行动
  7. 基础正则和扩展正则的作用
  8. vue-cli项目在IE下运行钩子函数抛出异常“ReferenceError: “Promise”未定义“”的解决办法
  9. QT 车牌号正则验证
  10. 中国各省份中英文,Json格式
  11. App推广要做哪些事?渠道、方案、人脉......
  12. s型人口增长曲线matlab程序,matlab人口预测及数据曲线拟合.ppt
  13. 车辆调度系统php,GitHub - Teamo1001/VehicleSYS: 一个基于Laravel框架的车辆调度、定位、管理系统,服务端...
  14. Qt获取当前控件所在窗口的位置(坐标)
  15. 软工萌新必备app及其用处
  16. TMS320F2837x开发例程使用手册
  17. Linux-centos7-防火墙
  18. 3.24 使用海绵工具制作变异的白虎 [原创Ps教程]
  19. 充电桩云平台-一站式运营服务平台
  20. 高清摄像机的发展历程及市场现状分析

热门文章

  1. 黑龙江伊春现受伤雄性东北虎 目前已被成功救治
  2. JAVA权重计算(根据自己理解计算的,不喜勿喷)
  3. 新年新气象,重新出发
  4. 如何申请CSDN博客专栏
  5. Oracle创建用户与授予表空间与权限
  6. 信息系统项目管理师(第1章)
  7. 一个完整的计算机系统五个基本部分组成,一个完整的计算机系统
  8. MFC中ShowWindow函数
  9. 结合面向对象设计原则分析正方形是否为长方形的子类
  10. HBuilder打包