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的内存也是可以的,毕竟内存大了,可能永远就达不到熔断了。

相关推荐
HookJames41 分钟前
设计Section 08 · Applications & Project Scenarios
大数据
olivesun881 小时前
20万元 · 1年期 · A股组合投资方案
大数据·人工智能·物联网
alxraves1 小时前
医疗器械质量管理体系信息系统的需求
大数据·安全·健康医疗·制造
ai大模型中转api测评1 小时前
开发者接入实战:GPT-5.5 API 深度调优、推理策略与工程化降本指南
大数据·人工智能·gpt
YMatrix 官方技术社区1 小时前
全栈向量化 + 库内流计算:YMatrix 亮相 Postgres Conference 2026,双引擎重塑 AGI 时代 PostgreSQL 性能底座
大数据·postgresql·agi·ymatrix·超融合数据库
AI科技星2 小时前
算子数学|独立完整学科章节(百条原创公式· ROOT传世定稿)
大数据·算法·机器学习·数学建模·数据挖掘·量子计算
菜鸟小码2 小时前
Hadoop大数据时代的底座和基石
大数据·hadoop·分布式
隐于花海,等待花开2 小时前
18.TRUNC / LAST_DAY / NEXT_DAY 函数深度解析
大数据·hive
独隅2 小时前
Git误操作急救手册
大数据·git·elasticsearch
隐于花海,等待花开2 小时前
17.DATE_FORMAT 函数深度解析
大数据·hive