>>>>> 附2 hystrix详述(2)- 配置

一、hystrix在生产中的建议

1、保持timeout的默认值(1000ms),除非需要修改(其实通常会修改)

2、保持threadpool的的线程数为10个,除非需要更多

3、依赖标准的报警和监控系统来捕获问题

4、通过dashboards的实时监控来动态修改配置,直到满意为止

二、配置信息(default或HystrixCommandKey最常用的几项

  • 超时时间(默认1000ms,单位:ms)

    • hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds

      • 在调用方配置,被该调用方的所有方法的超时时间都是该值,优先级低于下边的指定配置
    • hystrix.command.HystrixCommandKey.execution.isolation.thread.timeoutInMilliseconds
      • 在调用方配置,被该调用方的指定方法(HystrixCommandKey方法名)的超时时间是该值
  • 线程池核心线程数
    • hystrix.threadpool.default.coreSize(默认为10)
  • Queue
    • hystrix.threadpool.default.maxQueueSize(最大排队长度。默认-1,使用SynchronousQueue。其他值则使用 LinkedBlockingQueue。如果要从-1换成其他值则需重启,即该值不能动态调整,若要动态调整,需要使用到下边这个配置)
    • hystrix.threadpool.default.queueSizeRejectionThreshold(排队线程数量阈值,默认为5,达到时拒绝,如果配置了该选项,队列的大小是该队列)
      • 注意:如果maxQueueSize=-1的话,则该选项不起作用
  • 断路器
    • hystrix.command.default.circuitBreaker.requestVolumeThreshold(当在配置时间窗口内达到此数量的失败后,进行短路。默认20个)

      • For example, if the value is 20, then if only 19 requests are received in the rolling window (say a window of 10 seconds) the circuit will not trip open even if all 19 failed.
    • hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds(短路多久以后开始尝试是否恢复,默认5s)
    • hystrix.command.default.circuitBreaker.errorThresholdPercentage(出错百分比阈值,当达到此阈值后,开始短路。默认50%)
  • fallback
    • hystrix.command.default.fallback.isolation.semaphore.maxConcurrentRequests(调用线程允许请求HystrixCommand.GetFallback()的最大数量,默认10。超出时将会有异常抛出,注意:该项配置对于THREAD隔离模式也起作用)

三、监控hystrix

说明:hystrix为每一个commandKey提供了计数器。原理:

附:清晰大图

四、常见的hystrix事件类型

  • run()

    • SUCCESS:run()成功,不触发getFallback()
    • FAILURE:run()抛异常,触发getFallback()
    • TIMEOUT:run()超时,触发getFallback()
    • BAD_REQUEST:run()抛出HystrixBadRequestException,不触发getFallback()
    • SHORT_CIRCUITED:断路器开路,触发getFallback()
    • THREAD_POOL_REJECTED:线程池耗尽,触发getFallback()
    • FALLBACK_MISSING:没有实现getFallback(),抛出异常
  • getFallback()
    • FALLBACK_SUCCESS:getFallback()成功,不抛异常
    • FALLBACK_FAILURE:getFallback()失败,抛异常
    • FALLBACK_REJECTION:调用getFallback()的线程数超量,抛异常

五、Metrics storage and Dashboard

仅仅记录hystrix1.5.0及其后续版本,之前的版本的数据结构不一样。

http://www.ahlinux.com/java/18235.html

时间: 2024-10-12 09:55:33

>>>>> 附2 hystrix详述(2)- 配置的相关文章

>>>>> 附1 hystrix详述(1)

一.hystrix的作用 控制被依赖服务的延时和失败 防止在复杂系统中的级联失败 可以进行快速失败(不需要等待)和快速恢复(当依赖服务失效后又恢复正常,其对应的线程池会被清理干净,即剩下的都是未使用的线程,相对于整个 Tomcat 容器的线程池被占满需要耗费更长时间以恢复可用来说,此时系统可以快速恢复) getFallback(失败时指定的操作)和优雅降级 实现近实时的检测.报警.运维 二.hystrix实现中需要注意的点 为每一个依赖服务维护一个线程池(或者信号量),当线程池占满+queueS

服务容错保护断路器Hystrix之五:配置

接着<服务容错保护断路器Hystrix之二:Hystrix工作流程解析>中的<2.8.关于配置>再列举重要的配置如下 一.hystrix在生产中的建议 1.保持timeout的默认值(1000ms),除非需要修改(其实通常会修改) 2.保持threadpool的的线程数为10个,除非需要更多 3.依赖标准的报警和监控系统来捕获问题 4.通过dashboards的实时监控来动态修改配置,直到满意为止 二.配置信息(default或HystrixCommandKey)最常用的几项 超时

附6 hystrix metrics and monitor

一.基本方式 hystrix为每一个commandKey提供了计数器 二.实现流程 https://raw.githubusercontent.com/wiki/Netflix/Hystrix/images/metrics-generation.png 三.Hystrix event types 1.什么情况下会触发fallback方法? 2.fallback方法在什么情况下会抛出异常 四.metrics storage 1.实现原理 当计数结果(metrics)产生之后,这些结果会在被推到其他

Shiro整合SSH开发3:配置Shiro认证后页面地址跳转问题(和详述不配置需要注意的问题)

在视频教程中讲请求认证成功后跳转页面的问题是一笔带过的,但是我觉得有必要单独写一篇对应的文章进行叙述. 我用了SSH来整合Shiro,在开发后验证的过程中,每次登陆后Shiro都会跳转到一个不知名js中,但是重点是我上一次访问的地址是: Edit http://localhost:8080/shiro_05/user/login.action 认证之后应该跳转到上一个请求的地址,但是Shiro却跳转到了: http://localhost:8080/shiro_05/user/js/eqmt.j

memcached原理详述及配置

如果一个网站流量很大,则查询数据库将会耗费大量时间.如果将经常查询的的数据和对象缓存到内存中,则需要查询数据库时,直接返回内存中缓存的数据.这中静态化方式则会高效很多.分布式缓存系统是为了解决数据库服务器和web服务器直接的瓶颈.其中memcached是一个开源.高性能.分布式的内存对象缓存系统.主要通过在内存中缓存数据和对象减轻数据库的负载来加速动态web程序.内存中缓存的数据通 过API的方式被存取,数据就像一张大的HASH表,以键-值对方式存在. 读取 执行读取操作的顺序是从 Web 层获

笔记:Spring Cloud Feign Hystrix 配置

在 Spring Cloud Feign 中,除了引入了用户客户端负载均衡的 Spring Cloud Ribbon 之外,还引入了服务保护与容错的工具 Hystrix,默认情况下,Spring Cloud Feign 会为将所有 Feign客户端的方法都封装到 Hystrix 命令中进行服务保护,需要注意的是 Ribbon 的超时与 Hystrix 的超时是二个概念,需要让 Hystrix 的超时时间大于 Ribbon 的超时时间,否则 Hystrix 命令超时后,该命令直接熔断,重试机制就没

Hystrix断路器配置属性解析

HystrixCommand 配置方式 我们的配置都是基于 HystrixCommand 的,我们通过在方法上添加 @HystrixCommand 注解并配置注解的参数来实现配置,但有的时候一个类里面会有多个 Hystrix 方法,每个方法都是类似配置的话会冗余很多代码,这时候我们可以在类上使用 @DefaultProperties 注解来给整个类的 Hystrix 方法设置一个默认值. 配置项 下面是 HystrixCommand 支持的参数,除了 commandKey/observableE

Linux命令:网络配置常用命令

网络配置常用命令简介:    在Linux中网络属于内核的功能 1. 执行命令生成地址:(执行后立即生效,服务重启后失效) RHEL5: /etc/modprobe.conf  RHEL6: /etc/udev/rules.d/70-persistent-net.rules  alias ifconfig [ethX]     -a: 显示所有接口的配置住处      ifconfig ethX IP/MASK [up|down]     配制后立即生效,重启后网络服务或主机失效 网络服务:  

IIS配置MVC网站

我自己随便写了个MVC网站,能够 在vs2010里直接运行.但是加到IIS里之后却显示403.14错误,说是服务器没有启动“目录浏览”或没指定默认的文件. 当然,我没有必要启动“目录浏览”,又因为MVC是由router来控制的,我也没有必要指定其它的默认文件. 我看了看C:\Windows\System32\drivers\etc下的host文件,里面的ip的确是本机的127.0.0.1, 对应的网站和mvc网站绑定的网址也一样: “应用程序池”里面的版本是v4.0.30319, 托管管道模式选