ES集群G1回收器,堆空间无法被回收问题

  ES堆空间不足的问题,困扰了我有两年的时间。dump堆去分析,也未能分析出来,堆到底是被什么占用了。 我把堆空间给了31.9G,这是指针压缩生效的临界值,如果再大就指针压缩失效了。

  痛苦的是,随着时间的增长。堆空间在持续增长,且GC和FGC都不能把堆给回收掉。GC完了还是28G。

  堆空间不足以后,毋庸置疑的是,会带来各种各样的问题。垃圾回收更频繁(STW会让卡着),节点通信不稳定,节点假离线、同时对写入和查询都会频繁的触发堆的父级熔断。不管是哪个问题都会导致服务不可用,大量的慢查询。

背景

垃圾回收器G1

堆空间大小:31.96G

ES集群,上百个节点

问题:GC 堆空间无法释放,老年代无法被回收。堆空间严重不足。

1.堆占用高且无法回收问题

1.1 以一个节点为例

从监控上,总是看到堆是红色的!

1.2 节点的堆利用都到达 85以上

在kibana上看监控也是这样,可以看到节点的堆利用都到达 85 以上了。 

1.3 对比GC日志

这是正常点的节点GC

多了5个 超大的regin, old regin 也一直回收不掉。 可用的eden分区 只有几十个。最大的问题是老年代回收不掉。

2. 无心插柳柳成荫

  还是去想分析堆,于是去dump堆快照。在对堆打快照的时候,发现堆被正常回收了。

2.1 操作如下

2.1.1 先查看一下es的进程id

ps -ef | grep elasticsearch

 进程id如下

 2.1.2 去dump堆快照

进入到节点的安装目录,然后进入到jdk目录下的bin目录下,去dump堆快照

./jmap -dump:live,format=b,file=dump.hprof  222319

 打完快照时间大概在45s

快照大小25G

如果有兴趣,这里可以再进行堆的分析。 

2.1.3 堆分析结果

ES千亿级检索实战 堆OOM 问题深度分析_es oom-CSDN博客

ES堆占用高问题分析与解决方案_es占用内存太大-CSDN博客

3. 注意事项

  在堆快照期间,节点有短暂的离线(实际上和节点重启没有什么区别,位于的区别就是节点的进程没有变化)然后再加入集群的动作这个操作实际上是会影响到请求的延迟的。因为在快照期间,节点STW不响应集群了。已经在节点上执行的请求,还未结束的请求,会变成慢查询。等待响应。接着是master节点联系不到该节点。大概是30s的时间,master会联系3次节点,每次等10s,如果联系不上,则任务该节点掉线了。会进行把别的副本提为主分片(这里可以考虑把索引设置为多久后再分配)。然后等快照结束,节点正常和master通信,重新加入节点,然后把分片初始化进来。

4. 堆问题暂时性被解决 

  不能说完全解决问题,但是这是目前唯一可操作的,影响最小的方案。如果有人遇到过类似的问题解决了,可以教教我(不胜感激)

  在所有的节点都依次操作后,结果如下(几天后还是这个效果),虽然堆空间有上涨,但是是以缓慢的速度增长的。目前我还没有能力排查到到底是不是bug引起的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/237212.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql复习笔记05(小滴课堂)

mysql的慢查询日志开启与问题定位 一张数据库数据很大的表。 查询一条数据,很快就查询出来了。 根据不同的条件,查到的数据相同,但是查询所花费的时间却是不同的。 使用命令查询慢查询日志是否开启,目前它是关闭着的。 开启日志。…

利用prometheus+grafana进行Linux主机监控

文章目录 一.架构说明与资源准备二.部署prometheus1.上传软件包2.解压软件包并移动到指定位置3.修改配置文件4.编写启动脚本5.启动prometheus服务 三.部署node-exporter1.上传和解压软件包2.设置systemctl启动3.启动服务 四.部署grafana1.安装和启动grafana2.设置prometheus数据…

Java研学-HTTP 协议

一 概述 1 概念和作用 概念:HTTP 是 HyperText Transfer Protocol (超文本传输协议)的简写,它是 TCP/IP 协议之上的一个应用层协议。简单理解就是 HTTP 协议底层是对 TCP/IP 协议的封装。   作用:用于规定浏览器和服务器之间数据传输的格式…

【源码解析】聊聊ReentrantReadWriteLock是如何实现的读写锁

为什么需要读写锁 在并发编程领域,有多线程进行提升整体性能,但是却引入了共享数据安全性问题。基本就是无锁编程下的单线程操作,有互斥同步锁操作,但是性能不高,并且同一时刻只有一个线程可以操作资源类。但是对于大…

[SWPUCTF 2021 新生赛]gift_F12

打开环境 题目有提示(F12),那就查看一下源代码 直接滑到最后 看提示猜测,flag就在源代码里了 ctrlf查找flag 最后得到flag,改一下形式就可以了

ORACLE总结

例1: 现在有 医嘱主表ORDER_MAIN(ID,ORDER_ID,ORDER_NAME) A表 和医嘱执行表ORDER_EXEC(ID,ORDER_ID,PLAN_TIME) B表 两个表是用ORDER_ID关联起来的,A表一个ORDER_ID对应一条数据,B表一个ORDER_ID对应多个字段,要求根据ORDER_…

网络技术基础与计算思维实验教程_2.4_跨交换机VLAN配置实验

实验内容 实验目的 实验原理 实验步骤 构建 在工作区放置交换机然后单击 选择config , 把交换机的默认名改为switch1 再放置两个交换机 再放置终端 放置三台与交换机1相连的终端 再放置三台与交换机3相连的终端 再放置两台与交换机2相连的终端 用直通线连接 然后用交叉线互联交…

java8流库之Stream.iterate

简介 java.util.stream.Stream 下共有两个 iterate iterate(T seed, final UnaryOperator<T> f)iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> f) 该方法产生一个无限流&#xff0c;它的元素包含seed&#xff0c;在seed上调用f产生的…

Matlab论文插图绘制模板第131期—函数等高线图

在之前的文章中&#xff0c;分享了Matlab函数折线图的绘制模板&#xff1a; 函数三维折线图&#xff1a; 函数网格曲面图&#xff1a; 函数曲面图&#xff1a; 进一步&#xff0c;再来分享一下函数等高线图。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数…

【Week-P2】CNN彩色图片分类-CIFAR10数据集

文章目录 一、环境配置二、准备数据三、搭建网络结构四、开始训练五、查看训练结果六、总结3.1 ⭐ torch.nn.Conv2d()详解3.2 ⭐ torch.nn.Linear()详解3.3 ⭐torch.nn.MaxPool2d()详解3.4 ⭐ 关于卷积层、池化层的计算4.2.1 optimizer.zero_grad()说明4.2.2 loss.backward()说…

MyBatis Plus使用遇到的问题

如果想使用Mapper的xxxById()方法&#xff0c;实体类的主键上面必须加上TableId注解&#xff0c;如果不加&#xff0c;会报错 2023-12-21 22:48:33.526 WARN 11212 --- [ main] c.b.m.core.injector.DefaultSqlInjector : class com.example.mybatisplusdemo.dom…

ubuntu18.04 64 位安装笔记——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

进入VirtuakBox官网&#xff0c;网址链接&#xff1a;Oracle VM VirtualBoxhttps://www.virtualbox.org/ 网页连接&#xff1a;Ubuntu Virtual Machine Images for VirtualBox and VMwarehttps://www.osboxes.org/ubuntu/ 将下发的ds_db01.sql数据库文件放置mysql中 12、编写S…

无约束优化问题求解笔记(2):最速下降法

目录 3. 最速下降法3.1 最速下降法的基本思想3.2 基于精确搜索的最速下降法3.3 基于精确搜索的最速下降法的程序实现3.4 基于精确搜索的最速下降法的缺点 Reference 3. 最速下降法 3.1 最速下降法的基本思想 最速下降法是典型的线搜索方法. 设 f f f 是 R n \mathbb{R}^n R…

vue2与vue3的区别

首先了解什么是vue3 Vue.js 3.0&#xff08;简称Vue 3&#xff09;是一个流行的JavaScript框架Vue.js的最新版本。Vue 3于2020年9月正式发布&#xff0c;带来了许多令人兴奋的新特性和改进。下面是Vue 3的一些主要特点&#xff1a; 更快的性能&#xff1a;Vue 3通过全新的响应…

【redis】redis系统实现发布订阅的标准模板

目录 简介参数配置代码模板 简介 Redis发布订阅功能是Redis的一种消息传递模式&#xff0c;允许多个客户端之间通过消息通道进行实时的消息传递。在发布订阅模式下&#xff0c;消息的发送者被称为发布者&#xff08;publisher&#xff09;&#xff0c;而接收消息的客户端被称为…

Easyexcel读取单/多sheet页

Easyexcel读取单/多sheet页 此文档会说明单个和多个的sheet页的读取方法&#xff0c;包括本人在使用过程中的踩坑点。 依赖不会的自行百度导入&#xff0c;话不多说&#xff0c;直接上干货。以下示例基于2.x&#xff0c;新版本基本类似 1、创建实体 实体是用来接收对应列的数据…

【QT】QGraphicsView和QGraphicsItem坐标转换

坐标转换 QGraphicsItem和QGraphicsView之间的坐标转换需要通过QGraphicsScene进行转换 QGraphicsView::mapToScene() - 视图 -> 场景QGraphicsView::mapFromScene() - 场景 -> 视图QGraphicsItem::mapToScene() - 图元 -> 场景QGraphicsItem::mapFromScene() - 场景 …

java连接oracle出现ORA-12505错误

问题 sqlplus可以连接;但java连接报错:ORA-12505 ORA-12505, TNS:listener does not currently know of SID given in connect descr 解析 原因: 数据库中实际使用的实例名并非与集群对外使用的相同&#xff0c;使用第三方构件或程序进行连接的时候&#xff0c;所给数据库运…

Arduino驱动LTR390-UV紫外线传感器(光照传感器篇)

目录 1、传感器特性 2、硬件原理图 3、控制器和传感器连线图 4、驱动程序

C++ Qt开发:StringListModel字符串列表映射组件

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍QStringListModel字符串映射组件的常用方法及…