一次elasticsearch集群jvm断路器修复记录

本文记录了一位工程师在遇到Elasticsearch集群因数据量过大导致的内存溢出问题的解决过程,包括尝试调整fielddata断路器的限制、设置密码、更改节点IP、增加节点内存以及优化配置等步骤。最终通过设置indices.fielddata.cache.size和indices.breaker.total.use_real_memory解决了集群频繁熔断的问题。
摘要由CSDN通过智能技术生成

[parent] Data too large, data for [indices:data/write/bulk[s]] would be [27989754 …
es集群突然抛出这个异常,起初以为是谁的任务有做了超出集群jvm内存限制的操作于是

第一次尝试解决:大家跑着的用到es的任务都停止,查看资料发现大家遇到这个问题都说是fielddata 断路器的问题,于是也做了如下的设置,集群还是会每隔几分钟就有数据节点丢失,发生熔断现象,尝试失败;

PUT /_cluster/settings
{
  "persistent": {
    "indices.breaker.fielddata.limit": "60%"
  }
} 


PUT /_cluster/settings
{
  "persistent": {
    "indices.breaker.request.limit": "40%"
  }
} 


PUT /_cluster/settings
{
  "persistent": {
    "indices.breaker.total.limit": "70%"
  }
} 

第二次尝试解决:给集群加密码(./elasticsearch-setup-passwords interactive),6个用户每次设置到一半的时候就又发生熔断抛出这个异常,这里应该就不是加密码能解决的了;

第三次尝试解决:接下来把三台master节点的虚拟机ip改变,集群各节点elasticsearch.yml中配置也改变连接ip,重启集群各节点后,几分钟后还是会发生节点丢失,熔断的现象,解决失败;

第四次尝试解决:怀疑是es数据量太大了,集群的内存不够用了,于是给每个数据节点的虚拟机扩内存到64g,数据节点的jvm内存调高到32g(这里按照官方文档的说法32g已经是达到建议使用最大堆内存了
)master节点也都调高到16g内存了,此时集群内存扩充了一倍,达到了304gb,配置完成后集群重启,好像没事了,运行了一些任务尝试,短暂使用后还是会报这个错误,但是也能成功的插入一些数据和查询使用了,会有失败现象;

第五次尝试解决:通过查询资料在集群节点中elasticsearch.yml 增加如下配置
indices.fielddata.cache.size: 40% #(有了这个设置,最久未使用(LRU)的 fielddata 会被回收为新数据腾出空间 ),这就是集群发生熔断的主要原因
indices.breaker.total.use_real_memory: false #(默认为true默认值为JVM堆内存的95%,置为false默认值为JVM堆内存的70%),到此集群全部重启,大家陆续启动任务集群也没在报错。

https://blog.csdn.net/weixin_42166515/article/details/89093832?spm=1001.2101.3001.6650.7&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-7-89093832-blog-48035723.pc_relevant_blogantidownloadv1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-7-89093832-blog-48035723.pc_relevant_blogantidownloadv1&utm_relevant_index=10

https://elasticsearch.cn/question/9933

https://www.jianshu.com/p/f99d8d1904be

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值