# Circuit breakers（熔断器）

原文链接 : [https://www.elastic.co/guide/en/elasticsearch/reference/5.3/circuit-breaker.html#fielddata-circuit-breaker](https://www.elastic.co/guide/en/elasticsearch/reference/5.3/circuit-breaker.html#fielddata-circuit-breaker)

译文链接 :[Circuit breakers（熔断器）](/pages/viewpage.action?pageId=9405872)

贡献者 : [赵芳城](/display/~zhaofangcheng)，[ApacheCN](/display/~apachecn)，[Apache中文网](/display/~apachechina)

Elasticsearch 含多种熔断器用来避免因为操作引起来的OutOfMemoryError（内存溢出错误）. 每个熔断器指定可以使用多少内存的限制。 另外，还有一个父级别的熔断器，指定可以在所有断路器上使用的总内存量。

可以使用cluster-update-settings API在实时集群上动态更新这些设置。

## parent circuit breaker（父熔断器）

 父熔断器可以通过如下配置：

  indices.breaker.total.limit

               整个父级断点器的启动限制，默认为JVM堆的70％。

## Field data circuit breaker（ 列数据熔断器） 

  列数据断路器，Elasticsearch系统会估计有多少数据被加载到内存中。 它可以避免因为列字段加载（缓存）增长过多带来的异常。 默认情况下，该限制配置为最大JVM堆的60％。

可以配置以下参数：
index.breaker.fielddata.limit

       fieldData断点器的限制，默认为JVM堆的60％

indices.breaker.fielddata.overhead

       所有列数据乘以一个常量得到最终的值。 默认为1.03

## Request circuit breaker(请求熔断器)

请求断路器允许Elasticsearch防止每个请求数据结构（例如，用于在请求期间计算聚合的内存）超过一定量的内存。

indices.breaker.request.limit

   request熔断器的限制，默认为JVM堆的60%

indices.breaker.request.overhead

   所有请求乘以一个常量得到最终的值。 默认为1

## In flight requests circuit breaker（请求中的熔断器？）

 请求中的熔断器，允许Elasticsearch限制在传输或HTTP级别上的所有当前活动的传入请求的内存使用超过节点上的一定量的内存。 内存使用是基于请求本身的内容长度。

network.breaker.inflight_requests.limit

   (inflight_requests)请求中熔断器，默认为100％的JVM堆。 这意味着受限于父母断路器配置的极限。

network.breaker.inflight_requests.overhead

   所有(inflight_requests)请求中估算的常数乘以确定最终估计。 默认为1

## Script compilation circuit breaker（脚本编译熔断器）

与以前的基于内存的断路器略有不同，脚本编译断路器在一段时间内限制了内联脚本编译的数量。

有关详细信息，请参阅[scripting](https://www.elastic.co/guide/en/elasticsearch/reference/5.3/modules-scripting-using.html "How to use scripts") 文档的“prefer-parameters”部分。 

限制一分钟内允许编译的唯一动态脚本的数量。 默认为15。