美文网首页
如何设置Hystrix线程池大小?

如何设置Hystrix线程池大小?

作者: zlup | 来源:发表于2017-07-14 18:13 被阅读0次

在压测FeignClient接口时候,发现FeignClient接口处理请求的能力和Hystrix为其提供的线程池大小有关。

测试代码:

@FeignClient (value="service-provider", fallbackFactory= providerServiceFallbackFactory.class)

public interface testService {

@RequestMapping(value="/v1/test",method= RequestMethod.POST)

Result test(@RequestBody TestEntity testEntity);

}

并发测试后异常:

Task java.util.concurrent.FutureTask@27d69e27 rejected from java.util.concurrent.ThreadPoolExecutor@61d1c14e[Running, pool size = 10, active threads = 10, queued tasks = 0, completed tasks = 62058]

原因分析:

1. 并发数太大,触发了熔断。

2. 熔断原因和ThreadPoolExecutor有关,并且提示pool size是10,线程池满了,无法提交任务。

查看Hystrix官方文档

Hystrix使用舱壁模式(bulkhead pattern)隔离每个依赖,从而限制对依赖的并发访问。

客户端(库,网络请求等等)运行在不同的线程。这使它们独立于请求线程(Tomcat线程池),因此请求线程可以在依赖线程花费时间太长时,摆脱此依赖线程。

Hystrix为每个依赖提供一个小的线程池(或信号)(默认10个线程),如果线程池已满调用将被立即拒绝,默认不采用排队.加速失败判定时间。

可以通过设置依赖线程池默认大小,提高并发处理能力。在application.yml里面:

hystrix:

   threadpool:

       service-provider:

           coreSize:  100

相关文章

  • 如何设置Hystrix线程池大小?

    在压测FeignClient接口时候,发现FeignClient接口处理请求的能力和Hystrix为其提供的线程池...

  • 如何设置线程池大小

    如何设置线程池大小 线程池的线程数量设置过多会导致线程竞争激烈,如果线程数量设置过少的话,还会导致系统无法充分利用...

  • Feign httpok 线程池配置

    、1.Feign默认访问方式是HttpURLConnection 2.Hystrix线程池设置 Hystrix对每...

  • JAVA并发梳理(五)线程池

    关于线程池的实现,各自的特点等稍后再补充。现在先总结下如何合理地设置线程池的大小。 线程池中线程的数目是跟线程池所...

  • CPU与线程

    一、对于一个8核的的高性能CPU来说在多线程场景下是不是线程池设置的越大越好?如何确定线程池的大小,设置不当会带来...

  • java----线程池

    什么是线程池 为什么要使用线程池 线程池的处理逻辑 如何使用线程池 如何合理配置线程池的大小 结语 什么是线程池 ...

  • Executors.newFixedThreadPool(NTH

    并发编程中线程池 是跑不了的, 用过线程池的朋友 都会遇到这样的一个问题: 如何合理地估算线程池大小? 怎么样设置...

  • Hystrix线程隔离技术解析-信号量

    hystrix的线程隔离技术除了线程池,还有另外一种方式:信号量。 线程池和信号量的区别 在《Hystrix线程隔...

  • 26-设置线程池的大小

    设置线程池的大小 线程池的理想大小取决于将要提交的任务类型和所部署系统的特性。 为了正确的定制线程池的大小,你需要...

  • Java设置线程池数量

    如果是CPU密集型应用,则线程池大小设置为N+1 如果是IO密集型应用,则线程池大小设置为2N+1 最佳线程数目 ...

网友评论

      本文标题:如何设置Hystrix线程池大小?

      本文链接:https://www.haomeiwen.com/subject/nxlohxtx.html