request 断路器估算需要完成其他请求部分的结构大小,例如创建一个聚合桶,默认限制是堆内存的 40%。
indices.breaker.total.limit
total 揉合 request 和 fielddata 断路器保证两者组合起来不会使用超过堆内存的 70%。
断路器的限制可以在文件 config/elasticsearch.yml 中指定,可以动态更新一个正在运行的集群:
PUT /_cluster/settings
{
“persistent” : {
“indices.breaker.fielddata.limit” : “40%”
}
}
关于给 fielddata 的大小加一个限制,从而确保旧的无用 fielddata 被回收的方法。 indices.fielddata.cache.size 和 indices.breaker.fielddata.limit 之间的关系非常重要。 如果断路器的限制低于缓存大小,没有数据会被回收。为了能正常工作,断路器的限制 必须 要比缓存大小要高。
#### 断路器设置
##### 断路器目的
ES通过断路器的设置,来保护集群内存不超过设定值,从而保证集群的稳定性。
Elasticsearch 包含多个断路器,用于防止操作导致 OutOfMemoryError。每个断路器指定它可以使用多少内存的限制。此外,还有一个父级断路器,用于指定可跨所有断路器使用的内存总量。
##### 断路器种类
###### 父断路器(parent circuit breaker)
可以使用以下设置配置父级断路器:
indices.breaker.total.use_real_memory
确定父断路器