elasticsearch实战-使用G1垃圾回收

本文将引导您通过修改Elasticsearch配置文件,实现从传统垃圾回收方式向高效G1垃圾回收的过渡,显著减少大内存应用下的停顿时间。并深入探讨了G1垃圾回收的原理、优势及其在Elasticsearch中的具体配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java的垃圾回收真是让人又恨又爱。当今大内存已经成为服务器的趋势,使用CMS垃圾回收有点捉襟见肘。为何要使用g1垃圾回收,我想用过es的人都会很清楚。下面我就介绍一下在elasticsearch中,如何使用G1垃圾回收。

首先找到es的配置文件。elasticsearch.in.sh,这个文件在es的bin目录下面。

然后找到配置垃圾回收的配置。

# Force the JVM to use IPv4 stack
if [ "x$ES_USE_IPV4" != "x" ]; then
  JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"
fi

JAVA_OPTS="$JAVA_OPTS -XX:+UseParNewGC"
JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC"

JAVA_OPTS="$JAVA_OPTS -XX:CMSInitiatingOccupancyFraction=75"
JAVA_OPTS="$JAVA_OPTS -XX:+UseCMSInitiatingOccupancyOnly"

 加黑的这4行都注释掉。

然后换成:

JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC"
JAVA_OPTS="$JAVA_OPTS -XX:MaxGCPauseMillis=200"

 然后启动es就可以了。

 

好了,然后咱们回过头来说说为啥要使用g1垃圾回收。

首先:G1是Java7以后推荐的垃圾回收方式。自然有他很多的好处,jdk本身肯定对他做了很多优化。这个详细的我也不清楚。

但是,更重要的是,现在的Java程序,谁没有十来G的内存可以使用。特别像es这样的存储系统。你甚至都想给他配个几百G,省得你内存不够用。大内存导致Java的GC停顿时间长到让人难以容忍的程度。G1就是专门为这种大内存的应用程序提出的新一代内存垃圾回收解决方案。

 

另外,oracle官方建议,使用g1回收时,不要设置年轻代内存大小。

G1的配置还有很多参数,详细参数见官网:

http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/G1GettingStarted/index.html

 

 

 请支持原创:

http://donlianli.iteye.com/blog/1948787

 

对这类话题感兴趣?欢迎发送邮件至 donlianli@126.com
关于我:邯郸人,擅长Java,Javascript,Extjs,oracle sql。
更多我之前的文章,可以访问  我的空间
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值