Hystrix参数说明
参数配置
| 参数说明 | 值 | 备注 |
|---|---|---|
| groupKey | productStockOpLog | group标识,一个group使用一个线程池 |
| commandKey | addProductStockOpLog | command标识 |
| fallbackMethod | addProductStockOpLogFallback | fallback方法,两者需要返回值和参数相同 |
| 超时时间设置 | 400ms | 执行策略,在THREAD模式下,达到超时时间,可以中断 For most circuits, you should try to set their timeout values close to the 99.5th percentile of a normal healthy system so they will cut off bad requests and not let them take up system resources or affect user behavior. |
| 统计窗口(10s)内最少请求数 | 10 | 熔断策略 |
| 熔断多少秒后去尝试请求 | 5s | 熔断策略,默认值 |
| 熔断阀值 | 10% | 熔断策略:一个统计窗口内有10%的请求处理失败,会触发熔断 |
| 线程池coreSize | 10 | 默认值(推荐值).在当前项目中,需要做依赖隔离的方法为发送一条MQ消息,发送MQ消息方法的TP99耗时在1ms以下,近2周单机QPS最高值在18左右,经过灰度验证了午高峰后(当日QPS>上周末QPS),ActiveThreads<=2,rejected=0,经过压测后得出结论:线程池大小为10足以应对2000QPS,前提发送MQ消息时耗时正常(该部分为实际项目中的情况,在此不做详述) |
| 线程池maxQueueSize | -1 | 即线程池队列为SynchronousQueue |
参数说明
其他参数可参见 https://github.com/Netflix/Hystrix/wiki/Con
| 分类 | 参数 | 作用 | 默认值 | 备注 |
|---|---|---|---|---|
| 基本参数 | groupKey | 表示所属的group,一个group共用线程池 | getClass().getSimpleName(); | |
| 基本参数 | commandKey | 当前执行方法名 | ||
| Execution ( 控制HystrixCommand.run()的执行策略) | execution.isolation.strategy | 隔离策略,有THREAD和SEMAPHORE THREAD | 以下几种可以使用SEMAPHORE模式: 只想控制并发度 外部的方法已经做了线程隔离 调用的是本地方法或者可靠度非常高、耗时特别小的方法(如medis) | |
| Execution | execution.isolation.thread.timeoutInMilliseconds | 超时时间 | 1000ms | 默认值:1000 在THREAD模式下,达到超时时间,可以中断 在SEMAPHORE模式下,会等待执行完成后,再去判断是否超时 设置标准: 有retry,99meantime+avg meantime 没有retry,99.5meantime |
| Execution | execution.timeout.enabled | 是否打开超时 | true | |
| Execution | execution.isolation.thread.interruptOnTimeout | 是否打开超时线程中断 | true | THREAD模式有效 |
| Execution | execution.isolation.semaphore.maxConcurrentRequests | 信号量最大并发度 | 10 | SEMAPHORE模式有效 |
| Fallback ( 设置当fallback降级发生时的策略) | fallback.isolation.semaphore.maxConcurrentRequests | fallback最大并发度 | 10 | |
| Fallback | fallback.enabled | fallback是否可用 | true | |
| Circuit Breaker (配置熔断的策略) | circuitBreaker.enabled | 是否开启熔断 | true | |
| Circuit Breaker | circuitBreaker.requestVolumeThreshold | 一个统计窗口内熔断触发的最小个数/10s | 20 | |
| Circuit Breaker | circuitBreaker.sleepWindowInMilliseconds | 熔断多少秒后去尝试请求 | 5000ms | |
| Circuit Breaker | circuitBreaker.errorThresholdPercentage | 失败率达到多少百分比后熔断 | 50 | 主要根据依赖重要性进行调整 |
| Circuit Breaker | circuitBreaker.forceOpen | 是否强制开启熔断 | ||
| Circuit Breaker | circuitBreaker.forceClosed | 是否强制关闭熔断 | 如果是强依赖,应该设置为true | |
| Metrics (设置关于HystrixCommand执行需要的统计信息) | metrics.rollingStats.timeInMilliseconds | 设置统计滚动窗口的长度,以毫秒为单位。用于监控和熔断器。 | 10000 | 滚动窗口被分隔成桶(bucket),并且进行滚动。 例如这个属性设置10s(10000),一个桶是1s。 |
| Metrics | metrics.rollingStats.numBuckets 设置统计窗口的桶数量 | 10 | metrics.rollingStats.timeInMilliseconds必须能被这个值整除 | |
| Metrics | metrics.rollingPercentile.enabled | 设置执行时间是否被跟踪,并且计算各个百分比,50%,90%等的时间 | true | |
| Metrics | metrics.rollingPercentile.timeInMilliseconds | 设置执行时间在滚动窗口中保留时间,用来计算百分比 | 60000ms | |
| Metrics | metrics.rollingPercentile.numBuckets | 设置rollingPercentile窗口的桶数量 | 6 | metrics.rollingPercentile.timeInMilliseconds必须能被这个值整除 |
| Metrics | metrics.rollingPercentile.bucketSize | 此属性设置每个桶保存的执行时间的最大值。 | 100 | 如果设置为100,但是有500次求情,则只会计算最近的100次 |
| Metrics | metrics.healthSnapshot.intervalInMilliseconds | 采样时间间隔 | 500 | |
| Request Context ( 设置HystrixCommand使用的HystrixRequestContext相关的属性) | requestCache.enabled | 设置是否缓存请求,request-scope内缓存 | true | |
| Request Context | requestLog.enabled | 设置HystrixCommand执行和事件是否打印到HystrixRequestLog中 | ||
| ThreadPool Properties(配置HystrixCommand使用的线程池的属性) | coreSize | 设置线程池的core size,这是最大的并发执行数量。 | 10 | 设置标准:coreSize = requests per second at peak when healthy × 99th percentile latency in seconds + some breathing room 大多数情况下默认的10个线程都是值得建议的 |
| ThreadPool Properties | maxQueueSize | 最大队列长度。设置BlockingQueue的最大长度 | -1 | 默认值:-1 如果使用正数,队列将从SynchronousQueue改为LinkedBlockingQueue |
| ThreadPool Properties | queueSizeRejectionThreshold | 设置拒绝请求的临界值 | 5 | 此属性不适用于maxQueueSize = - 1时 设置设个值的原因是maxQueueSize值运行时不能改变,我们可以通过修改这个变量动态修改允许排队的长度 |
| ThreadPool Properties | keepAliveTimeMinutes | 设置keep-live时间 | 1分钟 | 这个一般用不到因为默认corePoolSize和maxPoolSize是一样的。 |
Hystrix参数说明的更多相关文章
- Hystrix使用说明,配置参数说明
一.什么情况下会触发fallback方法? 名字 描述 触发fallback EMIT 值传递 NO SUCCESS 执行完成,没有错误 NO FAILURE 执行抛出异常 YES TIMEOUT 执 ...
- Spring Cloud(三) --- hystrix
Hystrix 说到Hystrix就得先说一下产生的背景等等,那就是雪崩效应. 在微服务中肯定存在多个服务层之间的调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服 ...
- 转: 使用Hystrix实现自动降级与依赖隔离
使用Hystrix实现自动降级与依赖隔离 原创 2017年06月25日 17:28:01 标签: 异步 / 降级 869 这篇文章是记录了自己的一次集成Hystrix的经验,原本写在公司内部wiki里 ...
- 使用Hystrix实现自动降级与依赖隔离-微服务
转载: https://www.jianshu.com/p/138f92aa83dc Hystrix出现的原因: hystrix是netflix开源的一个容灾框架,解决当外部依赖故障时拖垮业务系统.甚 ...
- SpringCloud (十) Hystrix Dashboard单体监控、集群监控、与消息代理结合
一.前言 Dashboard又称为仪表盘,是用来监控项目的执行情况的,本文旨在Dashboard的使用 分别为单体监控.集群监控.与消息代理结合. 代码请戳我的github 二.快速入门 新建一个Sp ...
- Spring cloud Hystrix使用@HystrixCommand使用Hystrix组件及@EnableCircuitBreaker原理介绍
通过@HystrixCommand注解实现在Spring Cloud使用Hystrix组件相关的工程 cloud-registration-center:注册中心 cloud-service-hyst ...
- 微服务架构之spring cloud hystrix&hystrix dashboard
在前面介绍spring cloud feign中我们已经使用过hystrix,只是没有介绍,spring cloud hystrix在spring cloud中起到保护微服务的作用,不会让发生的异常无 ...
- Spring Cloud(六):Hystrix 监控数据聚合 Turbine【Finchley 版】
Spring Cloud(六):Hystrix 监控数据聚合 Turbine[Finchley 版] 发表于 2018-04-17 | 更新于 2018-05-07 | 上一篇我们介绍了使用 H ...
- 微服务熔断限流Hystrix之流聚合
简介 上一篇介绍了 Hystrix Dashboard 监控单体应用的例子,在生产环境中,监控的应用往往是一个集群,我们需要将每个实例的监控信息聚合起来分析,这就用到了 Turbine 工具.Turb ...
随机推荐
- Oracle 官网 jdk1.6 下载地址
在oracle官方网站下载地址 http://www.oracle.com/technetwork/java/archive-139210.html http://www.oracle.com/tec ...
- UIAlertViewController 2
iOS 8的新特性之一就是让接口更有适应性.更灵活,因此许多视图控制器的实现方式发生了巨大的变化.全新的UIPresentationController在实现视图控制器间的过渡动画效果和自适应设备尺寸 ...
- Jquery的promise对象
一直用jquery,ajax一直是这么写: $.ajax({ url: 'abc.com/index', type: 'post', data: { abc:1 }, success: functio ...
- 自己动手开发更好用的markdown编辑器-07(扩展语法)
这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址 http://benq.im/2015/05/19/hexomd-07/ 文章目录 1. 准备工作 2. 目录语法 ...
- Qt 推断一个IP地址是否有效
QHostAddress test; if (!test.setAddress("111.111.111.1")) { ui->statusBar->showMessa ...
- NativeViewer for VS2010
记得非常久之前公布了一款能够在调试中可视化Mat数据的插件,只是仅仅能用于VS2012及以上.我用的是VS2010(笔记本跑10都卡的不得了,12不敢奢望),不免有些遗憾.非常高兴的say如今这个问题 ...
- php 结合md5的加密,解密方法
php 结合md5的加密,解密方法 张映 发表于 2012-06-28 分类目录: php 标签:md5, php 最近在整理代码发现了一个不错的东西,结合md5的加解密算法.网上关于php结合md5 ...
- js基础系列框架:JS重要知识点(转载)
这里列出了一些JS重要知识点(不全面,但自己感觉很重要).彻底理解并掌握这些知识点,对于每个想要深入学习JS的朋友应该都是必须的. 讲解还是以示例代码搭配注释的形式,这里做个小目录: JS代码预解析原 ...
- windows2008,命令行远程登录
命令行强制开启3389服务支持server2008和2003 1.C:\Windows\System32\wbem\wmic /namespace:\\root\cimv2\terminalservi ...
- 2017-5-14 湘潭市赛 Parentheses 转化思想+贪心 使括号序列合法的最小花费。满足前面左括号的数量>=有括号的数量。
Parentheses Accepted : Submit : Time Limit : MS Memory Limit : KB Parentheses Bobo has a very long s ...