Пул потоков Hystrix MaximumSize, coreSize и allowMaximumSizeToDivergeFromCoreSize не работает? - PullRequest
0 голосов
/ 20 сентября 2019

Я настроил конфигурацию пула потоков Hystrix как - coreSize=10, maximumSize=100 и allowMaximumSizeToDivergeFromCoreSize=true для клавиши управления.Я развернул приложение, но оно отклоняет потоки при высоком значении QPS -

Caused by: java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@7bb2e868 rejected from java.util.concurrent.ThreadPoolExecutor@39627710[Running, pool size = 10, active threads = 10, queued tasks = 0, completed tasks = 3409]
    at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2047)
    at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:823)
    at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1369)
    at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
    at com.netflix.hystrix.strategy.concurrency.HystrixContextScheduler$ThreadPoolWorker.schedule(HystrixContextScheduler.java:172)
    at com.netflix.hystrix.strategy.concurrency.HystrixContextScheduler$HystrixContextSchedulerWorker.schedule(HystrixContextScheduler.java:106)

Я использую hystrix-javanica 1.5.12 версию.Это не работает, поскольку задачи в очереди равны 0.

Остальные значения по умолчанию следующие (имена ниже немного абстрагированы) -

    isCircuitBreakerEnabled = true;
    circuitBreakerRequestVolumeThreshold = 10;
    isFallBackEnabled = false;
    circuitBreakerSleepWindow = 10000;
    circuitBreakerErrorThresholdPercentage = 50;
    circuitBreakerForceOpen = false;
    circuitBreakerForceClosed = false;
    metricsRollingStats = 10000;
    executionIsolationThreadTimeOut = 20000;
    executionIsolationStrategy = "THREAD";
    executionTimeOutEnable = true;
    poolCoreSize = 10;
    poolMaxSize = 15;
    poolMaxQueueSize = -1;
    keepAliveTime = 1;
    poolQueueSizeRejectionThreshold = 1;
    allowMaximumSizeToDivergeFromCoreSize = false;

Я следил за проблемой - https://github.com/Netflix/Hystrix/issues/1436. Еще один человек сообщил об аналогичной проблеме с этой версией в 2017 году.

Как вы думаете, мне не хватает какой-либо конфигурации?Должен ли я изменить executeIsolationStrategy на Semaphore, чтобы он работал?

...