欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Cloud Hystrix線程池不足的解決方法

 更新時間:2020年02月05日 14:36:48   作者:drunkery_owner  
這篇文章主要介紹了Spring Cloud Hystrix線程池不足的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

現(xiàn)象:

昨天突然線上很多接口獲取失敗,通過 kibana發(fā)現(xiàn)大量異常,具體異常信息:

...into fallback. Rejected command because thread-pool queueSize is at rejection threshold.

異常代碼出處:

@FeignClient(name = "api", fallbackFactory = LoadBalancingFallbackFactory.class)
public interface LoadBalancingFeignClient {

  @PostMapping(value = "/api/loadBalancing/server")
  Result currentServer();

}

@Slf4j
@Component
public class LoadBalancingFallbackFactory implements FallbackFactory<LoadBalancingFeignClient> {

  @Override
  public LoadBalancingFeignClient create(Throwable throwable) {
    final String msg = throwable.getMessage();
    return () -> {
      log.error("loadBalancingFeignClient currentServer into fallback. {}", msg);
      return Result.error();
    };****
  }

}

原因:

看到這里已經(jīng)很明顯了,是由于hystrix線程池不夠用,直接熔斷導(dǎo)致的。
項(xiàng)目apollo配置:

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds = 3500
hystrix.threadpool.default.maxQueueSize = 60
hystrix.threadpool.default.queueSizeRejectionThreshold = 40

hystrix參數(shù)簡析:

maxQueueSize:線程池大小,默認(rèn)為-1,創(chuàng)建的隊(duì)列是SynchronousQueue,如果設(shè)置大于0則根據(jù)其大小創(chuàng)建LinkedBlockingQueue。

queueSizeRejectionThreshold:動態(tài)控制線程池隊(duì)列的上限,即使maxQueueSize沒有達(dá)到,達(dá)到queueSizeRejectionThreshold該值后,請求也會被拒絕,默認(rèn)值5

相關(guān)源碼:

hystrix-core-1.5.12-sources.jar!/com/netflix/hystrix/strategy/concurrency/HystrixContextScheduler.java

  private class HystrixContextSchedulerWorker extends Worker {

    private final Worker worker;

    private HystrixContextSchedulerWorker(Worker actualWorker) {
      this.worker = actualWorker;
    }

    @Override
    public void unsubscribe() {
      worker.unsubscribe();
    }

    @Override
    public boolean isUnsubscribed() {
      return worker.isUnsubscribed();
    }

    @Override
    public Subscription schedule(Action0 action, long delayTime, TimeUnit unit) {
      if (threadPool != null) {
        if (!threadPool.isQueueSpaceAvailable()) {
          throw new RejectedExecutionException("Rejected command because thread-pool queueSize is at rejection threshold.");
        }
      }
      return worker.schedule(new HystrixContexSchedulerAction(concurrencyStrategy, action), delayTime, unit);
    }

    @Override
    public Subscription schedule(Action0 action) {
      if (threadPool != null) {
        if (!threadPool.isQueueSpaceAvailable()) {
          throw new RejectedExecutionException("Rejected command because thread-pool queueSize is at rejection threshold.");
        }
      }
      return worker.schedule(new HystrixContexSchedulerAction(concurrencyStrategy, action));
    }

  }

解決辦法:

  • 適當(dāng)調(diào)大Hystrix線程隊(duì)列參數(shù)
  • 動態(tài)水平擴(kuò)容服務(wù)
  • 優(yōu)化下游服務(wù),減少服務(wù)響應(yīng)時間

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解SpringCloud Finchley Gateway 統(tǒng)一異常處理

    詳解SpringCloud Finchley Gateway 統(tǒng)一異常處理

    這篇文章主要介紹了詳解SpringCloud Finchley Gateway 統(tǒng)一異常處理,非常具有實(shí)用價值,需要的朋友可以參考下
    2018-10-10
  • IDEA配置Maven教程的超詳細(xì)講解版

    IDEA配置Maven教程的超詳細(xì)講解版

    IntelliJ IDEA是當(dāng)前最流行的Java IDE(集成開發(fā)環(huán)境)之一,也是業(yè)界公認(rèn)最好用的Java開發(fā)工具之一,這篇文章主要給大家介紹了關(guān)于IDEA配置Maven教程的超詳細(xì)講解版,需要的朋友可以參考下
    2023-11-11
  • Java中Socket下載一個文本文件

    Java中Socket下載一個文本文件

    這篇文章主要介紹了Socket下載一個文本文件的實(shí)例代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-06-06
  • Java中import導(dǎo)入的用法說明

    Java中import導(dǎo)入的用法說明

    這篇文章主要介紹了Java中import導(dǎo)入的用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 基于SpringBoot實(shí)現(xiàn)圖片上傳與顯示

    基于SpringBoot實(shí)現(xiàn)圖片上傳與顯示

    這篇文章主要為大家詳細(xì)介紹了基于SpringBoot實(shí)現(xiàn)圖片上傳與顯示,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Java中private關(guān)鍵字詳細(xì)用法實(shí)例以及解釋

    Java中private關(guān)鍵字詳細(xì)用法實(shí)例以及解釋

    這篇文章主要給大家介紹了關(guān)于Java中private關(guān)鍵字詳細(xì)用法實(shí)例以及解釋的相關(guān)資料,在Java中private是一種訪問修飾符,它可以用來控制類成員的訪問權(quán)限,文中將用法介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Java泛型機(jī)制與反射原理相關(guān)知識總結(jié)

    Java泛型機(jī)制與反射原理相關(guān)知識總結(jié)

    今天帶大家學(xué)習(xí)的是關(guān)于Java進(jìn)階的相關(guān)知識,文章圍繞著Java泛型機(jī)制與反射原理展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Java調(diào)用第三方http接口的四種方式總結(jié)

    Java調(diào)用第三方http接口的四種方式總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java調(diào)用第三方http接口的四種方式,在實(shí)際開發(fā)中我們經(jīng)常會與第三方公司進(jìn)行合作,接入第三方接口,文中給出了詳細(xì)的代碼實(shí)例,需要的朋友可以參考下
    2023-08-08
  • 詳解Spring極速集成注解redis實(shí)錄

    詳解Spring極速集成注解redis實(shí)錄

    這篇文章主要介紹了詳解Spring極速集成注解redis實(shí)錄,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • lombok中@Data使用常見的小坑及解決

    lombok中@Data使用常見的小坑及解決

    在Java中使用Lombok庫的@Data注解時,布爾類型屬性可能導(dǎo)致生成的get方法不符合預(yù)期,對于非is開頭的布爾屬性,Lombok生成的方法會添加is前綴,導(dǎo)致原本期待的get方法不存在,例如,對于屬性private boolean active,Lombok會生成方法名為isActive而不是getActive
    2024-10-10

最新評論