The indices.breaker.total.limit
setting in Elasticsearch controls the overall memory limit for all circuit breakers combined. It acts as a parent circuit breaker, preventing the sum of all individual circuit breakers from exceeding a specified percentage of the JVM heap.
- Default value: 70% of JVM heap
- Possible values: Any percentage between 0 and 100
- Recommendation: Keep the default unless you have specific memory requirements
This setting is crucial for preventing out-of-memory errors in Elasticsearch. It ensures that the combined memory usage of all circuit breakers doesn't exceed a safe threshold, maintaining cluster stability and performance.
Example
To change the indices.breaker.total.limit
setting:
indices.breaker.total.limit: 80%
Increasing this limit might be necessary if you're experiencing frequent circuit breaker errors and have available heap space. However, setting it too high can risk JVM out-of-memory errors.
Common Issues
- Setting the limit too low can cause frequent circuit breaker errors, impacting query performance
- Setting the limit too high may lead to JVM out-of-memory errors
Do's and Don'ts
Do:
- Monitor your cluster's memory usage before adjusting this setting
- Consider the memory requirements of other processes running on the same machine
- Adjust gradually and observe the impact on your cluster's performance
Don't:
- Set the limit above 95% of the JVM heap
- Ignore other circuit breaker settings when adjusting this one
- Change this setting without understanding your cluster's memory usage patterns
Frequently Asked Questions
Q: How does indices.breaker.total.limit relate to other circuit breaker settings?
A: The indices.breaker.total.limit
acts as an overall cap for all individual circuit breakers. While each circuit breaker has its own limit, the total of all breakers cannot exceed this global limit.
Q: Can increasing indices.breaker.total.limit improve query performance?
A: Increasing this limit may improve performance if you're experiencing frequent circuit breaker errors. However, it's crucial to ensure you have enough available heap space to safely increase the limit.
Q: What happens if the total memory usage exceeds the indices.breaker.total.limit?
A: If the total memory usage exceeds this limit, Elasticsearch will throw a circuit breaker exception, rejecting the operation that would have caused the limit to be exceeded.
Q: How often should I review and adjust the indices.breaker.total.limit setting?
A: Review this setting periodically, especially after significant changes to your cluster's workload or hardware. However, avoid frequent adjustments without careful monitoring and testing.
Q: Is it safe to set indices.breaker.total.limit to 100%?
A: Setting indices.breaker.total.limit
to 100% is not recommended. It removes the safety net against out-of-memory errors and can lead to JVM crashes. Always leave some headroom for other processes and unexpected memory spikes.