Eureka参数调优
1、常见问题
- 1、为什么服务下线了,Eureka Server接口返回的信息还会存在?
- 2、为什么服务上线了,Eureka Client不能及时获取到?
- 3、为什么偶尔会有如下提示:
EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RENOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE
2、解决方法
- 针对第一个问题,Eureka Server并不是强一致的,因此registry中会存留已过期的实例信息,有一下几个原因:
- 1、应用实例异常挂掉,没能在挂掉之前告知Eureka Server要下线该服务实例信息。这种情况下就需要依赖Eureka Server的EvictionTask去剔除。
- 2、应用实例下线时有告知Eureka Server下线,但是由于Eureka Server的REST API有response cache,因此需要等待缓存过期才能更新。
- 3、Eureka Server由于开启并引入了SELF PRESERVATION模式,导致registry的信息不会因为过期而被剔除掉,直到退出SELF PRESERVATION模式。
- 针对第二个问题,可以调整EvictionTask的调度频率,比如下面的配置,将调度间隔默认的60秒,调整为15秒:
eureka.server.eviction-interval-timer-in-ms=5000
针对response cache的问题,可以根据情况考虑关闭readOnlyCacheMap:
eureka.server.use-read-only-response-cache=false
或者调整readWriteCacheMap的过期时间:
eureka.server.response-cache-auto-expiration-in-seconds=60
针对SELF PRESERVATION的问题,在测试环境可以将enable-self-preservation设置为false:
eureka.server.enable-self-preservation=false
关闭的话,则会提示:
RENEWALS ARE LESSER THAN THE THRESHOLD. THE SELF PRESERVATION MODE IS TURNED OFF. THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.
或者:
THE SELF PRESERVATION MODE IR TURED OFF.THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.
- 针对新服务上线,Eureka Client获取不及时的问题,在测试环境,可以适当提高Client端拉取Server注册信息的频率,例如下面将默认的30秒改为15秒:
eureka.client.registry-fetch-interval-seconds=5
- 针对SELF PRESERVATION问题,在实际生产过程中,经常会有网络抖动等问题,造成服务实例与Eureka Server的心跳未能如期保持,但是服务实例本身是健康的,这个时候如果按照租约机制剔除的话,会造成误判,如果大范围误判的话,可能会导致整个服务列表中的大部分注册信息被剔除,从而导致没有可用服务。Eureka为了解决这个问题引入可SELF PRESERVATION机制,当最近一分钟接受到的续约的次数小于等于指定阀值的话,则关闭续约失效剔除,禁止定时任务剔除失效的实例,从而保护注册信息,对于开发测试环境,开启这个机制有时候反而会影响系统的持续集成,因此可以通过如下参数关闭该机制:
eureka.server.enable-self-preservation=false
在生产环境中,可以把renewalPercentThreshold及leaseRenewalIntervalInSeconds参数调小一点,进而提高SELF PRESERVATION机制的门槛,比如:
eureka.instance.lease-renewal-interval-in-seconds=10
eureka.server.renewal-percent-threshold=0.49
Eureka参数调优的更多相关文章
- Eureka 参数调优
常见问题 为什么服务下线了,Eureka Server 接口返回的信息还会存在. 为什么服务上线了,Eureka Client 不能及时获取到. 为什么有时候会出现如下提示: EMERGENCY! E ...
- Spark Shuffle原理、Shuffle操作问题解决和参数调优
摘要: 1 shuffle原理 1.1 mapreduce的shuffle原理 1.1.1 map task端操作 1.1.2 reduce task端操作 1.2 spark现在的SortShuff ...
- 搭建 windows(7)下Xgboost(0.4)环境 (python,java)以及使用介绍及参数调优
摘要: 1.所需工具 2.详细过程 3.验证 4.使用指南 5.参数调优 内容: 1.所需工具 我用到了git(内含git bash),Visual Studio 2012(10及以上就可以),xgb ...
- 【转】Windows下使用libsvm中的grid.py和easy.py进行参数调优
libsvm中有进行参数调优的工具grid.py和easy.py可以使用,这些工具可以帮助我们选择更好的参数,减少自己参数选优带来的烦扰. 所需工具:libsvm.gnuplot 本机环境:Windo ...
- spark参数调优
摘要 1.num-executors 2.executor-memory 3.executor-cores 4.driver-memory 5.spark.default.parallelism 6. ...
- Linux内核 TCP/IP、Socket参数调优
Linux内核 TCP/IP.Socket参数调优 2014-06-06 Harrison.... 阅 9611 转 165 转藏到我的图书馆 微信分享: Doc1: /proc/sy ...
- JVM参数调优
JVM参数调优 JVM参数调优是一个很头痛的问题,可能和应用有关系,下面是本人一些调优的实践经验,希望对读者能有帮助,环境LinuxAS4,resin2.1.17,JDK6.0,2CPU,4G内存,d ...
- 【转】XGBoost参数调优完全指南(附Python代码)
xgboost入门非常经典的材料,虽然读起来比较吃力,但是会有很大的帮助: 英文原文链接:https://www.analyticsvidhya.com/blog/2016/03/complete-g ...
- XGBoost参数调优完全指南(附Python代码)
XGBoost参数调优完全指南(附Python代码):http://www.2cto.com/kf/201607/528771.html https://www.zhihu.com/question/ ...
随机推荐
- Leetcode之深度优先搜索(DFS)专题-559. N叉树的最大深度(Maximum Depth of N-ary Tree)
Leetcode之深度优先搜索(DFS)专题-559. N叉树的最大深度(Maximum Depth of N-ary Tree) 深度优先搜索的解题详细介绍,点击 给定一个 N 叉树,找到其最大深度 ...
- [Python] Django框架入门
说明:Django框架入门 当前项目环境:python3.5.django-1.11 项目名:test1 应用名:booktest 命令可简写为:python manager.py xxx => ...
- 【数据库】MySQL 函数大全包含示例(涵盖了常用如时间、数字、字符串处理、数据流函数的和一些冷门的)
ps:博客园markdown不能自动生成列表,更好的阅读体验可访问我的个人博客http://www.isspark.com/archives/mysqlFunctionDesc 数学函数(Mathem ...
- BZOJ4034 [HAOI2015]树上操作+DFS序+线段树
参考:https://www.cnblogs.com/liyinggang/p/5965981.html 题意:是一个数据结构题,树上的,用dfs序,变成线性的: 思路:对于每一个节点x,记录其DFS ...
- 1 PY环境与变量
一 环境与文件形式 1.环境搭建http://jingyan.baidu.com/article/eae07827f7f2d01fec5485f7.html 2. python 则进入交互模式 ex ...
- std::move的原理与实现,右值引用的深入理解
这次我真的懂了.... 首先C++11引入了右值引用 && ‘&&’这个要连起来看,是一个整体,C++多了一个关键字而已. 不是引用的引用.是船新的一种语法.那有什么用 ...
- springboot的最简创建方式
springboot是目前比较流行的技术栈之一,我在这里写一个springboot工程最简方式 首先开发工具是IDEA,双击打开IDEA,点击Create new Project 进入到这个页面,选择 ...
- java路障CyclicBarrier
当所有线程都执行到某行代码,才可已往下执行: package threadLock; import java.util.Random; import java.util.concurrent.Brok ...
- Vue兄弟组件通信
Vue兄弟组件通信之借助中央事件总线 下载链接:https://www.yinxiangit.com 其实要实现兄弟组件通信,就算是通过父子组件通信的方式也是可以达到的,如 子 ——>父——&g ...
- mysql之explain详解
mysql之explain详解 mysql之explain各个字段的详细意思: 字段 含义 select_type 分为简单(simple)和复杂 type all : 即全表扫描 index : 按 ...