记录Elasticsearch circuit_breaking_exception异常解决
业务场景:
Flink消费Kafka数据写入ES
组件版本:
CDH:6.3.0
Flink:1.12.1
Elasticsearch:7.7.0
异常明细:
Caused by: ElasticsearchStatusException[Elasticsearch exception [type=circuit_breaking_exception, reason=[parent] Data too large, data for [
异常原因:
由于ES有熔断器机制,一旦内存使用超过熔断器的限则将会触发熔断,不再响应任何请求,导致程序终止,但ES健康情况不受影响。
日志显示实际使用量[1979396994/1.8gb]已经超过了限制[1972122419/1.8gb],故触发熔断机制。
解决办法:
1、调大ES JVM堆内存
ES默认是2g,根据服务器配置做调整,一般建议为服务器内存的一半,并且建议Xms与Xmx大小一致。
(1)散搭ES修改方式:编辑jvm.options
(2)CDH修改方式:
详细内存配置说明可参考:
https://blog.csdn.net/duanzelun/article/details/106948808
2、调大字段数据熔断器(写场景)
如果服务器没有足够的内存可考虑此选项,indices.breaker.fielddata.limit默认为堆内存的40%,可做适当调整。