ES写入数据时:circuit_breaking_exception[[parent] Data too large

报错:

txt 复制代码
circuit_breaking_exception[[parent] Data too large, data for [<transport_request>] would be [12318476937/11.2gb], which is larger than the limit of [12237372108/12.2gb], real usage: [12318456248/11.2gb]

原因:

(1)表面原因是在ES中大量内存被占用,GC无法对heap进行垃圾回收,导致node内存用量超出limit限制。

(2)根本原因是ES设置有问题,默认配置是JVM内存使用达到75%的时候进行full GC,默认配置总熔断器indices.breaker.total.use_real_memory 它的值直接影响JVM堆内存分配的大小, 1、值为 true, indices.breaker.total.limit 为堆大小的 95%。 2、值为 false,indices.breaker.total.limit 为堆大小的70%

如果在还未到ES的full GC的时候,已经达到ES总熔断器的上限了,那么此时ES的内存一直没有回收,不断插入新数据,那么就会产生报错。

解决:1、在elasticsearch.yml添加配置:

yml 复制代码
indices.breaker.total.use_real_memory:false
indices.breaker.total.limit: 70%

2、修改ES的jvm.options:

yml 复制代码
-Xms10g
-Xmx10g
## GC configuration
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=60
-XX:+UseCMSInitiatingOccupancyOnly

假如JVM的内存设置的是10GB,经过以上配置后,熔断器的内存范围是7GB,GC的内存范围是6GB,那么在未达到熔断器的最高标准时,JVM会进行full GC,那么就不会报错了。或者就无脑加大ES的内存也是可以的,毕竟内存大了,可能永远就达不到熔断了。

相关推荐
Sinosecu-OCR16 分钟前
释放数字化力量:智能OCR识别如何重塑现代办公效率
大数据·人工智能
humors2212 小时前
【分享】传统文化/国学/圣贤视频
大数据·程序人生
新缸中之脑5 小时前
Graphlit: AI代理的上下文图层
大数据·人工智能
heimeiyingwang5 小时前
大模型 RAG 技术原理与企业级落地实践
大数据·数据库·人工智能·架构
培培说证6 小时前
2026 高职大数据与会计专业证书报考条件是什么?
大数据
LaughingZhu7 小时前
Product Hunt 每日热榜 | 2026-02-17
大数据·数据库·人工智能·经验分享·搜索引擎
华农DrLai7 小时前
向量嵌入入门:给每个词分配一个“数字指纹“
大数据·人工智能·ai·llm·rag
天辛大师7 小时前
天辛大师也谈神之视角,未来学AI全息大模型与预测原理
大数据·人工智能·决策树·随机森林·启发式算法
AI周红伟8 小时前
周红伟:具身机器人大爆炸了,机器人时代来临
大数据·人工智能·机器人·大模型·智能体·seedance
志栋智能8 小时前
AI驱动的数据库自动化巡检:捍卫数据王国的“智能中枢”
大数据·运维·数据库·人工智能·云原生·自动化