记录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 [<http_request>] would be [1979396994/1.8gb], which is larger than the limit of [1972122419/1.8gb], real usage: [1977917952/1.8gb], new bytes reserved: [1479042/1.4mb], usages [request=0/0b, fielddata=4008586/3.8mb, in_flight_requests=7691406/7.3mb, accounting=6917604/6.5mb]]]
异常原因:
由于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%,可做适当调整。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?