描述
Resilience4j version: 1.2
Java version: 1.8
SpringBoot version: 1.5.2
We are using resilience4j for circuit breaker setup and observing CircuitBreakerAspect.circuitBreakerAroundAdvice taking close to 2 seconds to execute, quite consistently. Any idea what could be the reason for a slow response time? Here's the config related to the circuit breaker -
// default
resilience4j.circuitbreaker.configs.default.register-health-indicator=true
resilience4j.circuitbreaker.configs.default.sliding-window-size=100
resilience4j.circuitbreaker.configs.default.minimum-number-of-calls=50
resilience4j.circuitbreaker.configs.default.permitted-number-of-calls-in-half-open-state=30
resilience4j.circuitbreaker.configs.default.wait-duration-in-open-state=5000ms
resilience4j.circuitbreaker.configs.default.failure-rate-threshold=50
resilience4j.circuitbreaker.configs.default.event-consumer-buffer-size=500
resilience4j.circuitbreaker.configs.default.slow-call-duration-threshold=2000ms
resilience4j.circuitbreaker.configs.default.slow-call-rate-threshold=100
resilience4j.circuitbreaker.configs.default.record-exceptions=
com.xyz.exception.ApiCallException
// shared
resilience4j.circuitbreaker.configs.shared.sliding-window-size=100
resilience4j.circuitbreaker.configs.shared.permitted-number-of-calls-in-half-open-state=30
resilience4j.circuitbreaker.configs.shared.wait-duration-in-open-state=45s
resilience4j.circuitbreaker.configs.shared.failure-rate-threshold=50
resilience4j.circuitbreaker.configs.shared.event-consumer-buffer-size=500
// serviceA
resilience4j.circuitbreaker.instances.serviceA.baseConfig=default
resilience4j.circuitbreaker.instances.serviceA.failure-rate-threshold=30
resilience4j.circuitbreaker.instances.serviceA.wait-duration-in-open-state=1s
resilience4j.circuitbreaker.instances.serviceA.record-exceptions=java.lang.RuntimeException
resilience4j.circuitbreaker.instances.serviceA.register-health-indicator=true
resilience4j.circuitbreaker.instances.serviceA.sliding-window-size=400
resilience4j.circuitbreaker.instances.serviceA.minimum-number-of-calls=200
resilience4j.circuitbreaker.instances.serviceA.permitted-number-of-calls-in-half-open-state=50
resilience4j.circuitbreaker.instances.serviceA.slow-call-duration-threshold=20000ms
resilience4j.circuitbreaker.instances.serviceA.slow-call-rate-threshold=100
The serviceA is a slow running service and takes around 5-15 seconds to complete on average.
The circuitBreakerAroundAdvice method is showing up in our monitoring tool to be taking 1.5-2.2 seconds to complete on average when the serviceA is taking around 5-15 seconds to execute successfully for a round trip call during our performance tests when we are hitting around 1600 times over a period of 30 mins.
Note : we cannot upgrade the spring boot version to use the latest resilience4j api at this moment.