There was no feedback on the topic of global Circuit Breaker vs per-core.
So I opened https://issues.apache.org/jira/browse/SOLR-16974 to propose 
supporting Global CB. This is still on design level, please weigh in with your 
thoughts.

Jan

> 30. aug. 2023 kl. 22:02 skrev Jan Høydahl <jan....@cominvent.com>:
> 
> Hi
> 
> For those interested in this topic, here is the JIRA, which has a Pull 
> Request for review: https://issues.apache.org/jira/browse/SOLR-16954
> 
> Jan Høydahl
> 
>> 3. jul. 2023 kl. 22:28 skrev Pierre Salagnac <pierre.salag...@gmail.com>:
>> 
>> Hi Jan,
>> 
>> As far as I know, Solr only supports circuit breaks for queries at the
>> moment.
>> 
>> We have a custom integration of circuit breakers for indexing (in Solr 8,
>> so that's not fully aligned with what in solr 9) with a custom
>> UpdateRequestProcessor. Basically, a new instance of every update processor
>> is created by calling the corresponding factory. We then check system stats
>> (CPU...) at the first handled doc.
>> Maybe there are other ways of integrating circuit breakers, but at least
>> doing so in an update processor was not intrusive in the code.
>> 
>> Probably it is worth it to have something standard in Solr. A "symetric"
>> class of SearchHandler to add CB integration could be UpdateRequestHandler.
>> 
>> Pierre
>> 
>> 
>> Le mar. 27 juin 2023 à 13:32, Jan Høydahl <jan....@cominvent.com> a écrit :
>> 
>>> Hi,
>>> 
>>> Solr has CPU and Memory circuit breakers that will terminate Search
>>> Requests only.
>>> See
>>> https://solr.apache.org/guide/solr/latest/deployment-guide/circuit-breakers.html
>>> for docs.
>>> 
>>> Example:
>>> 
>>>  <circuitBreaker class="solr.CircuitBreakerManager" enabled="true">
>>>    <str name="memEnabled">true</str>
>>>    <str name="memThreshold">75</str>
>>>    <str name="cpuEnabled">true</str>
>>>    <str name="cpuThreshold">75</str>
>>>  </circuitBreaker>
>>> 
>>> 
>>> A Solr node typically gets overloaded by the combined update and query
>>> traffic, and
>>> I'm looking into enabling ciricuit breakers for update requests. For many
>>> workloads, pausing
>>> update traffic would resolve the situation, with the benefit of users not
>>> being affected by aborted
>>> queries.
>>> 
>>> So ideally I'd want to be able to choose to enable/disable CB on
>>> update/query individually.
>>> Or better, to kill update requests on e.g. 80% threshold and search
>>> requests on 90% threshold.
>>> 
>>> The current breaker impl for search <
>>> https://github.com/apache/solr/blob/branch_9_2/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java#L372:380>
>>> [1] is hardcoded into SearchHandler in such a way that if ANY
>>> of the configured breakers trips, search requests are aborted. Also the
>>> breakers seem to be generic
>>> in nature, named CPUCircuitBreaker <
>>> https://github.com/apache/solr/blob/branch_9_2/solr/core/src/java/org/apache/solr/util/circuitbreaker/CPUCircuitBreaker.java>
>>> and MemoryCircuitBreaker <
>>> https://github.com/apache/solr/blob/branch_9_2/solr/core/src/java/org/apache/solr/util/circuitbreaker/MemoryCircuitBreaker.java>,
>>> so adding new UpdateCPUCircuitBreaker
>>> does not seem to be the intention here.
>>> 
>>> I'm also unclear on the usefulness of having CB on the core level and not
>>> the node level. If you have
>>> 10 cores from 10 collections on a node, and only some have CBs while
>>> others do not, the node will
>>> still be overloaded unless the admin convinces every collection owner to
>>> implement the same CBs?
>>> 
>>> So my question becomes - how do we enable CB for update requests into this
>>> mix in a clean way?
>>> 
>>> Jan


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org
For additional commands, e-mail: dev-h...@solr.apache.org

Reply via email to