Hystrix circuit short-circuited and is OPEN 异常

引起这个问题的原因是在一个滚动窗口内,失败了二十个(默认),就会发生短路,短路时间默认为5秒,5秒之内拒绝所有的请求,之后开始运行。

解决办法如下:

1.设置熔断器失败的个数,默认为20个,这里我给了1000个,只有超过1000个才会发生短路。

hystrix详细具体的配置信息可以谷歌一下,hystrix的配置。

hystrix.command.default.circuitBreaker.requestVolumeThreshold=1000

设置完成之后,没有出现短路的情况,但出现了

hystrix could not be queued for execution and no fallback available.

2.这是feign线程池的问题,因为feign默认的线程池大小为10个,而本次测试使用了100个线程

解决办法是设置feign的核心线程池的数量。下面那个maxQueueSize可以不用设置,默认为-1,使用的是SynchronousQueue。

#hystrix.threadpool.default.maxQueueSize=1000

3.设置完成之后,又出现了time-out。

解决办法:设置断路器的超时

#断路器超时设置和请求的超时

hystrix.command.default.execution.timeout.enabled=true
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=300000
ribbon.ConnectTimeout=300000
ribbon.ReadTimeout=300000

出现timeout的原因:

请求是100个线程去访问,我们知道CPU的线程是上下文切换的,有些线程迟迟得不到执行权,就一直挂在那里了,一直挂,一直挂,直到满足了断路器的timeout,然后就被抛出异常了。

后面采用了fallback,发现会拒绝执行fallback,原因也是线程太少,设置一下回退的线程数量就好了。

#设置回退的最大线程数
hystrix.command.default.fallback.isolation.semaphore.maxConcurrentRequests=50

原文地址:https://www.cnblogs.com/sunshinekevin/p/12183138.html

时间: 2024-10-13 03:53:51

Hystrix circuit short-circuited and is OPEN 异常的相关文章

技术选型:Sentinel vs Hystrix

摘要: 这是围绕 Sentinel 的使用场景.技术对比和实现.开发者实践等维度推出的系列文章的第三篇. ? 第一篇回顾: Dubbo 的流量防卫兵 | Sentinel如何通过限流实现服务的高可用性 - 传送门 ? 第二篇回顾: RocketMQ 的保险丝| Sentinel 如何通过匀速请求和冷启动来保障服务的稳定性 - 传送门 Sentinel 是阿里中间件团队研发的面向分布式服务架构的轻量级高可用流量控制组件,于今年7月正式开源. 这是围绕 Sentinel 的使用场景.技术对比和实现.

Hystrix断路器配置属性解析

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

Hystrix 配置参数全解析

前言 不久前在部门周会上分享了 Hystrix 源码解析之后,就无奈地背上了专家包袱,同事们都认为我对 Hystrix 很熟,我们接触 Hystrix 更多的还是工作中的使用和配置,所以很多人一遇到 Hystrix 的配置问题就会过来问我.为了不让他们失望,我把 Hystrix 的 配置文档 仔细看了一遍,将有疑问的点通过翻源码.查官方 issue.自己实验的方式整理了一遍,这才对 Hystrix 的配置有了一定的了解. 在了解这些配置项的过程中,我也发现了很多坑,平常我们使用中认为理所应当的值

笔记:Spring Cloud Hystrix 异常处理、缓存和请求合并

异常处理 在 HystrixCommand 实现的run方法中抛出异常,除了 HystrixBadRequestException之外,其他异常均会被Hystrix 认为命令执行失败并触发服务降级处理逻辑,所以当需要在命令中执行抛出不触发降级的异常时使用他,在使用注解配置实现 Hystrix 命令时,支持忽略指定异常类型功能,只需要通过设置 @HystrixCommand 注册的 ignoreException 参数,示例代码如下: @HystrixCommand (ignoreExceptio

Hystrix 解决服务雪崩效应

1.服务雪崩效应 默认情况下tomcat只有一个线程池去处理客户端发送的所有服务请求,这样的话在高并发情况下,如果客户端所有的请求堆积到同一个服务接口上, 就会产生tomcat的所有线程去处理该服务接口,可能会导致其他服务接口访问延迟: 2.Hystrix服务保护框架,在微服务中Hystrix为我们解决了哪些事情? Hystrix 别名"豪猪" 1)断路器 2)服务降级 3)服务熔断 4)服务隔离机制 5)服务雪崩效应 -->连环雪崩效应,如果比较严重的话,可能会导致整个微服务接

antenna

Antenna (radio) For other uses, see Antenna. Part of a series on Antennas Common types[show] Components[show] Systems[show] Safety and regulation[show] Radiation sources / regions[show] Characteristics[show] Techniques[show] v t e This article needs

(转)Spring Cloud(二)

(二期)23.微服务框架spring cloud(二) [课程23]熔断器-Hystrix.xmind0.1MB [课程23]微服务...zuul.xmind0.2MB 熔断器-Hystrix 雪崩效应 在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应.服务雪崩效应是一种因"服务提供者"的不可用导致"服务消费者"的不可用,并将不可用逐渐放大的过程. 如下图所示:A作为服务提供者,B为A的

Spring cloud Feign 深度学习与应用

简介 Spring Cloud Feign是一个声明式的Web Service客户端,它的目的就是让Web Service调用更加简单.Feign提供了HTTP请求的模板,通过编写简单的接口和插入注解,就可以定义好HTTP请求的参数.格式.地址等信息.Feign会完全代理HTTP请求,开发时只需要像调用方法一样调用它就可以完成服务请求及相关处理.开源地址:https://github.com/OpenFeign/feign.Feign整合了Ribbon负载和Hystrix熔断,可以不再需要显式地

图解kubernetes调度器预选设计实现学习

Scheduler中在进行node选举的时候会首先进行一轮预选流程,即从当前集群中选择一批node节点,本文主要分析k8s在预选流程上一些优秀的筛选设计思想,欢迎大佬们指正 1. 基础设计 1.1 预选场景 预选顾名思义就是从当前集群中的所有的node中,选择出满足当前pod资源和亲和性等需求的node节点,如何在集群中快速选择这样的节点,是个复杂的问题 1.2 平均分布 平均分布主要是通过让一个分配索引来进行即只有当所有的node都在本轮分配周期内分配一次后,才开始从头进行分配,从而保证集群的