断路器设置
断路器可防止 OpenSearch 导致 Java OutOfMemoryError。父断路器指定所有子断路器的可用内存总量。子断路器指定其自身的可用内存总量。
要了解有关静态和动态设置的更多信息,请参阅配置 OpenSearch。
父断路器设置
OpenSearch 支持以下父断路器设置
-
indices.breaker.total.use_real_memory
(静态,布尔值):如果为true
,则父断路器会考虑实际内存使用量。否则,父断路器会考虑子断路器保留的内存量。默认值为true
。 -
indices.breaker.total.limit
(动态,百分比):指定父断路器的初始内存限制。如果indices.breaker.total.use_real_memory
为true
,则默认值为 JVM 堆的 95%。如果indices.breaker.total.use_real_memory
为false
,则默认值为 JVM 堆的 70%。
字段数据断路器设置
字段数据断路器限制将字段加载到字段数据缓存所需的堆内存。OpenSearch 支持以下字段数据断路器设置
-
indices.breaker.fielddata.limit
(动态,百分比):指定字段数据断路器的内存限制。默认值为 JVM 堆的 40%。 -
indices.breaker.fielddata.overhead
(动态,双精度浮点数):一个常数,字段数据估算值乘以该常数以确定最终估算值。默认值为 1.03。
请求断路器设置
请求断路器限制构建请求所需数据结构(例如,计算聚合时)所需的内存。OpenSearch 支持以下请求断路器设置
-
indices.breaker.request.limit
(动态,百分比):指定请求断路器的内存限制。默认值为 JVM 堆的 60%。 -
indices.breaker.request.overhead
(动态,双精度浮点数):一个常数,请求估算值乘以该常数以确定最终估算值。默认值为 1。
飞行中请求断路器设置
飞行中请求断路器限制传输层和 HTTP 层上所有当前运行的传入请求的内存使用量。请求的内存使用量基于请求的内容长度,并包括原始请求所需的内存和表示该请求的结构化对象。OpenSearch 支持以下飞行中请求断路器设置
-
network.breaker.inflight_requests.limit
(动态,百分比):指定飞行中请求断路器的内存限制。默认值为 JVM 堆的 100%(因此,飞行中请求的内存使用限制由父断路器的内存限制决定)。 -
network.breaker.inflight_requests.overhead
(动态,双精度浮点数):一个常数,飞行中请求估算值乘以该常数以确定最终估算值。默认值为 2。
脚本编译断路器设置
脚本编译断路器限制了在时间间隔内内联脚本编译的数量。OpenSearch 支持以下脚本编译断路器设置
script.max_compilations_rate
(动态,速率):在给定上下文中,在时间间隔内编译的唯一动态脚本的最大数量。默认值为每 5 分钟 150 个(150/5m
)。
正则表达式断路器设置
正则表达式断路器启用或禁用正则表达式并限制其复杂性。OpenSearch 支持以下正则表达式断路器设置
script.painless.regex.enabled
(静态,字符串):在 Painless 脚本中启用正则表达式。有效值为limited
:启用正则表达式并使用script.painless.regex.limit-factor
设置限制其复杂性。true
:启用正则表达式。关闭正则表达式断路器,不限制正则表达式复杂性。false
:禁用正则表达式。如果 Painless 脚本包含正则表达式,则返回错误。
默认值为
limited
。script.painless.regex.limit-factor
(静态,整数):仅当script.painless.regex.enabled
设置为limited
时应用。限制 Painless 脚本中正则表达式的字符数。字符限制通过将脚本输入中的字符数乘以script.painless.regex.limit-factor
来计算。默认值为 6(因此,如果输入有 5 个字符,则正则表达式中的最大字符数为 5 · 6 = 30)。