关于elasticsearch使用G1垃圾回收替换CMS
最近ES集群数据节点经常出现jvm占用过高,频繁GC导致ES集群卡死,很长时间才恢复。在网上看到用G1垃圾回收可以改善这一情况,但都是老版本的ES,我们现在使用的版本是5.5.2,所以想问问各位5.5.2版本的ES能不能改用G1垃圾回收,另外要怎么改为G1,因为以前的版本都是在elasticsearch.in.sh文件中改JAVA_OPTS的配置,但在5.5.2版本中已找不到这个配置,好像在jvm.options文件中,但是不知道具体怎么改。求救~~
###############
我们线上的集群从5.3.2 - 6.2.4都有用G1的,没有什么问题。 修改jvm.options文件,将下面几行:
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
更改为
-XX:+UseG1GC
-XX:MaxGCPauseMillis=50
即可。
其中 -XX:MaxGCPauseMillis是控制预期的最高GC时长,默认值为200ms,如果线上业务特性对于GC停顿非常敏感,可以适当设置低一些。但是 这个值如果设置过小,可能会带来比较高的cpu消耗。
G1对于集群正常运作的情况下减轻G1停顿对服务时延的影响还是很有效的,但是如果是你描述的GC导致集群卡死,那么很有可能换G1也无法根本上解决问题。 通常都是集群的数据模型或者Query需要优化。
再次请问一下,替换为G1的话,是不是某种意义上可以减少GC的次数呢?或者说替换G1的好处体现在哪儿,不是太理解。
G1的停顿时间可以预测,相比CMS更加容易控制GC停顿时间。 另外G1不会像CMS那样产生内存碎片,对于大堆回收垃圾的效率更高。 就我们线上的实际应用情况看,对ES使用G1以后,Young GC的频率和耗时都可以极大的降低,Old GC几乎不会出现。
还有一个问题想请问下您,我最近要添加两个节点,我想在新加的两个节点直接配置使用G1,以前的节点暂时不改继续使用CMS,这样可以嘛?
可以的
#########
我觉得改垃圾回收器也不能解决你GC耗时过久的问题。要从根本上先分析GC耗时高的原因,通常来说都是因为堆分配太多了,而内存又都是常驻的,所以GC一次需要遍历的内存区太多导致耗时很久。
之前我们有一个日志集群,32G的堆,由于索引太多了导致master节点的内存被占满了,每次GC耗时1分钟多。
而我们有一个服务,内存只有512M,每次GC耗时只有几十毫秒。
所以先分析集群为什么会吃这么大内存吧
##################
G1GC官方推荐的jdk版本是JDK11,9开始默认使用G1,之前默认CMS,而且jdk8我改成G1是不会发生GC了,但是数据插入速度变慢了。
关于elasticsearch使用G1垃圾回收替换CMS的更多相关文章
- CMS垃圾回收与G1垃圾回收
CMS垃圾回收与G1垃圾回收的比较请参见:http://colobu.com/2015/04/14/G1-Getting-Started/
- JVM G1垃圾回收算法简要介绍
JVM G1垃圾回收算法简要介绍 G1的特点 能够像CMS垃圾回收算法一样并发操作应用线程(潜台词:多核) 无需太长时间即可压缩空闲内存空间(潜台词:不会引起太多的GC停顿时间) 尽可能地让GC时长可 ...
- JDK8新垃圾回收机制--G1垃圾回收机制
G1全称是Garbage First Garbage Collector,使用G1的目的是简化性能优化的复杂性.例如,G1的主要输入参数是初始化和最大Java堆大小.最大GC中断时间. G1 GC由Y ...
- JVM垃圾回收之CMS收集器
从前文JVM垃圾回收几种常见算法和常见收集器我们知道,CMS是老年代垃圾收集器.CMS 收集器主要关注系统停顿时间.CMS 是 Concurrent Mark Sweep 的缩写,意为并发标记清除,从 ...
- 理解G1垃圾回收日志
本篇文章主要介绍在-XX:+PrintGCDetails选项的情况下G1 GC log打印的信息.(注:本文假设读者对G1算法的基本原理已经有所了解) 下面是一段G1垃圾收集器相关的log信息 0.5 ...
- Java虚拟机内存模型及垃圾回收监控调优
Java虚拟机内存模型及垃圾回收监控调优 如果你想理解Java垃圾回收如果工作,那么理解JVM的内存模型就显的非常重要.今天我们就来看看JVM内存的各不同部分及如果监控和实现垃圾回收调优. JVM内存 ...
- 探索G1垃圾回收器
前言 最近王子因为个人原因有些忙碌,导致文章更新比较慢,希望大家理解,之后也会持续和小伙伴们一起共同分享技术干货. 上篇JVM的文章中我们对ParNew和CMS垃圾回收器已经有了一个比较透彻的认识,感 ...
- [牛感悟系列]JAVA(1)理解JAVA垃圾回收
理解JAVA垃圾回收的好处是什么?满足求知欲是一方面,编写更好的JAVA应用是另外一方面. 如果一个人对垃圾回收过程感兴趣,那表明他在应用程序开发领域有相当程度的经验.如果一个人在思考如何选择正确的垃 ...
- [译]GC专家系列1: 理解Java垃圾回收
原文链接:http://www.cubrid.org/blog/dev-platform/understanding-java-garbage-collection/ 了解Java的垃圾回收(GC)原 ...
随机推荐
- Math小记
20161231 黄金分割比:短/长=长/(短+长)=((根号5)-1)/2 ≍ 0.618 斐波那契数列前后两项的比值存在极限.设其中三个数为a.b.(a+b),则当项数趋于无穷时有a/b=b/(a ...
- 菜鸟网络Java面试-社招-一面(2019/11)
个人情况 2017年毕业,普通本科,计算机科学与技术专业,毕业后在一个二三线小城市从事Java开发,2年Java开发经验.做过分布式开发,没有高并发的处理经验,平时做To G的项目居多.写下面经是希望 ...
- Pytorch卷积神经网络识别手写数字集
卷积神经网络目前被广泛地用在图片识别上, 已经有层出不穷的应用, 如果你对卷积神经网络充满好奇心,这里为你带来pytorch实现cnn一些入门的教程代码 #首先导入包 import torchfrom ...
- jmeter(四十六)参数化与断言实战
概述 今天用jmeter做一次参数化实战.通过计数器遍历参数表,然后查询jdbc进行beanshell断言. 涉及元件 用户参数,计数器,正则表达式,jdbc,beanshell脚本 详细过程 在我们 ...
- Scrum Meeting 博客汇总
Scrum Meeting 博客汇总 一.Scrum Meeting 1. Alpha 第一次 Scrum Meeting 第二次 Scrum Meeting 第三次 Scrum Meeting 第四 ...
- mlocate比find快很多的查找命令
mlocate比find快很多的查找命令 使用linux操作系统的人,一般都用过文件查找命令find,在文件数量非常庞大的时候,比如在高通的android工程项目中,目录大小有十几个G,文件数量非常多 ...
- 测试winform自动悬浮
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
- 同一个交换机 局域网内 内网IP ping不通为什么 没关闭windows防火墙
同一个交换机 局域网内 内网IP ping不通为什么 没关闭windows防火墙
- Mysql 查询一个月当前时间一个月之前的数据
sql: AND date_format(createDTM, MONTH),'%Y-%m-%d')
- django入门7之django template和xadmin常用技巧
django入门7之django template和xadmin常用技巧 <li {% ' == '/course' %}class="active"{% endif %}& ...