lower fielddata circuit breaker's default limit (#27162)
* Lower fielddata circuit breaker default limit Lower fielddata circuit breaker default limit from 60% to 40% as we have moved to doc_values for most of the cases. * merge master in * update tests * update docs
This commit is contained in:
parent
c635904a1b
commit
d01b30acba
|
@ -92,6 +92,13 @@ heap memory instead of only considering the reserved memory by child circuit bre
|
|||
setting is `true`, the default parent breaker limit also changes from 70% to 95% of the JVM heap size.
|
||||
The previous behavior can be restored by setting `indices.breaker.total.use_real_memory` to `false`.
|
||||
|
||||
[float]
|
||||
==== Field data circuit breaker changes
|
||||
As doc values have been enabled by default in earlier versions of Elasticsearch,
|
||||
there is less need for fielddata. Therefore, the default value of the setting
|
||||
`indices.breaker.fielddata.limit` has been lowered from 60% to 40% of the JVM
|
||||
heap size.
|
||||
|
||||
[float]
|
||||
==== `fix` value for `index.shard.check_on_startup` is removed
|
||||
|
||||
|
|
|
@ -32,12 +32,12 @@ The parent-level breaker can be configured with the following settings:
|
|||
The field data circuit breaker allows Elasticsearch to estimate the amount of
|
||||
memory a field will require to be loaded into memory. It can then prevent the
|
||||
field data loading by raising an exception. By default the limit is configured
|
||||
to 60% of the maximum JVM heap. It can be configured with the following
|
||||
to 40% of the maximum JVM heap. It can be configured with the following
|
||||
parameters:
|
||||
|
||||
`indices.breaker.fielddata.limit`::
|
||||
|
||||
Limit for fielddata breaker, defaults to 60% of JVM heap
|
||||
Limit for fielddata breaker, defaults to 40% of JVM heap
|
||||
|
||||
`indices.breaker.fielddata.overhead`::
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ public class HierarchyCircuitBreakerService extends CircuitBreakerService {
|
|||
}, Property.Dynamic, Property.NodeScope);
|
||||
|
||||
public static final Setting<ByteSizeValue> FIELDDATA_CIRCUIT_BREAKER_LIMIT_SETTING =
|
||||
Setting.memorySizeSetting("indices.breaker.fielddata.limit", "60%", Property.Dynamic, Property.NodeScope);
|
||||
Setting.memorySizeSetting("indices.breaker.fielddata.limit", "40%", Property.Dynamic, Property.NodeScope);
|
||||
public static final Setting<Double> FIELDDATA_CIRCUIT_BREAKER_OVERHEAD_SETTING =
|
||||
Setting.doubleSetting("indices.breaker.fielddata.overhead", 1.03d, 0.0d, Property.Dynamic, Property.NodeScope);
|
||||
public static final Setting<CircuitBreaker.Type> FIELDDATA_CIRCUIT_BREAKER_TYPE_SETTING =
|
||||
|
|
|
@ -68,7 +68,7 @@ public class MemorySizeSettingsTests extends ESTestCase {
|
|||
assertMemorySizeSetting(HierarchyCircuitBreakerService.TOTAL_CIRCUIT_BREAKER_LIMIT_SETTING, "indices.breaker.total.limit",
|
||||
new ByteSizeValue((long) (JvmInfo.jvmInfo().getMem().getHeapMax().getBytes() * defaultTotalPercentage)));
|
||||
assertMemorySizeSetting(HierarchyCircuitBreakerService.FIELDDATA_CIRCUIT_BREAKER_LIMIT_SETTING, "indices.breaker.fielddata.limit",
|
||||
new ByteSizeValue((long) (JvmInfo.jvmInfo().getMem().getHeapMax().getBytes() * 0.6)));
|
||||
new ByteSizeValue((long) (JvmInfo.jvmInfo().getMem().getHeapMax().getBytes() * 0.4)));
|
||||
assertMemorySizeSetting(HierarchyCircuitBreakerService.REQUEST_CIRCUIT_BREAKER_LIMIT_SETTING, "indices.breaker.request.limit",
|
||||
new ByteSizeValue((long) (JvmInfo.jvmInfo().getMem().getHeapMax().getBytes() * 0.6)));
|
||||
assertMemorySizeSetting(HierarchyCircuitBreakerService.IN_FLIGHT_REQUESTS_CIRCUIT_BREAKER_LIMIT_SETTING,
|
||||
|
|
Loading…
Reference in New Issue