Hi Solr Dev Community,
I'm currently evaluating the behavior of Solr version *9.6.0* under load,
specifically focusing on the impact of enabling the *CPU Circuit Breaker*.
The configuration used is:
<circuitBreaker class="org.apache.solr.util.circuitbreaker.CPUCircuitBreaker">
<double name="threshold">90</double></circuitBreaker>
I'm polling CPU usage every second from the following endpoint:
http://{SolrHost}:8983/solr/admin/metrics?prefix=os.systemCpuLoad&wt=json
I ran two tests under identical conditions:
-
8 parallel scripts
-
Each script sends 50 requests per iteration
-
100 iterations
-
Total requests: 50 × 100 × 8 = 40,000
Test 1: Circuit Breaker Enabled (Threshold: 90%)
-
Time Taken: ~3 minutes
-
HTTP 200 responses: 31,394
-
HTTP 429 responses: 8,615
-
CPU Usage: Peaks between 80–100
[image: image.png]
Test 2: Circuit Breaker Disabled
-
Time Taken: ~4 minutes
-
HTTP 200 responses: 40,000
-
HTTP 429 responses: 0
-
CPU Usage: Hovers around 50%
[image: image.png]
Observation:
With the circuit breaker enabled, the overall time reduces slightly, but
the system returns a significant number of 429 responses and shows frequent
CPU saturation. Without the circuit breaker, all requests succeed, and CPU
usage remains moderate, albeit with slightly increased overall execution
time.
I will attach CPU usage graphs and relevant screenshots for reference.
Would appreciate your thoughts on:
-
Is this expected behavior under CPU circuit breaker logic?
-
Are there recommended tuning strategies to balance throughput and
protection?
-
Could there be overhead introduced by the breaker itself?
Thanks,
Puneet