警告!Eureka可能存在维护了错误的实例列表(当它们没有启动的时候,Eureka却把它当成启动的了);Renews值小于Threshold值,因此剩下未过期的都是安全的。
原因分析:
这个是Eureka的自我保护机制。Eureka Server在运行期间,会统计心跳失败的比例在15分钟之内是否低于85%,如果出现低于的情况(在单机调试的时候很容易满足,实际在生产环境上通常是由于网络不稳定导致),Eureka Server会将当前的实例注册信息保护起来,同时提示这个警告。
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,自注册,相关数据如下
阈值:1+2*1
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
参考文档
https://www.cnblogs.com/breath-taking/articles/7940364.html
相关推荐
01Spring Cloud Eureka:服务注册与发现1
springcloud整合Eureka的demo
SpringCloud 服务治理:Eureka.doc
spring cloud2.0 eureka server spring security配置,与spring cloud1.X还是有很大区别
spring cloud之Eureka Server搭建,最简洁的环境搭建,帮助新手快速搭建起Eureka Server!
SpringCloud+eureka+gateway.zip
Spring Cloud使用的各种示例,以最简单、最实用为标准 spring-cloud-eureka:eureka server单机、双机、集群示例 ...spring-boot-admin-eureka: 使用Spring Boot Admin 对Spring Cloud集群进行监控示例
springcloud全家桶框架,eureka
spring-cloud eureka 注册服务及发现实例,基于Springboot-2.1.10.RELEASE和SpringCloud-Greenwich.SR5
SpringCloud1.5x Eureka 注册中心代码,项目编译后可以直接运行。相关配置已经优化,可以直接使用。
解压文件--》 mvn clean package -->进入target目录,运行 java -jar *.jar
Spring Cloud & Eureka 微服务Demo 每个*-service项目为一类服务 服务无状态 同一类服务可以启动多个实例 有哪些实例可以提供服务:由eureka-server确定 调用哪个被调用方的服务:由调用方的@LoadBalance组件确定
分享下 spring-cloud 注册中心eureka搭建代码,有问题请在文章内留言,看到的话会及时解决。
springcloud+eureka+ribbon多服务负载均衡 springcloud+eureka+ribbon多服务负载均衡
第四章 SpringCloud使用Eureka集群.pdf
搭建一个springBoot+springCloud+Eureka+Feign的基础框架,数据库是MySQL,不涉及到表数据的操作所以下载后连接数据库就能运行
springboot框架+springcloud-Eureka搭建+springcloud0-zuul搭建代码,可以帮助新手搭建,才用的是为服务架构,但只是把架子打起来了,没有过多逻辑代码,参考学习下,希望对你们有帮助
使用eclipse创建spring cloud的eureka客户端和eureka服务端demo,参考地址: https://blog.csdn.net/qq_42382972/article/details/85843080
SpringCloud+Eureka+Ribbon实践代码Demo,SpringCloud是基于SpringBoot。Eureka:注册中心、服务发现。Ribbon:客户端负载均衡,负责对eureka中的服务进行调用。
很简单的demo,先启动eureka服务,再启动两个客户端即可访问