ES的JVM配置

JDK版本

使用JDK1.8的最新版本jdk-8u131-linux-x64.tar.gz(官方推荐ES5.4.1使用jdk-8u131以上的版本,我们现在es是1.7.1,计划升到5.X,所以用最新的)

JVM堆大小设置

Elasticsearch很耗内存、cpu。
标准的建议是把50%的内存给elasticsearch,剩下的50%给Lucene(官方建议:https://www.elastic.co/guide/en/elasticsearch/guide/current/heap-sizing.html)。
单个es实例内存分配不要超过32G。jdk1.8配置成-Xms32766m -Xmx32766m
具体原因是对象指针压缩技术:

$ JAVA_HOME=`/usr/libexec/java_home -v 1.8` java -Xmx32766m -XX:+PrintFlagsFinal 2> /dev/null | grep UseCompressedOops
     bool UseCompressedOops   := true
$ JAVA_HOME=`/usr/libexec/java_home -v 1.8` java -Xmx32767m -XX:+PrintFlagsFinal 2> /dev/null | grep UseCompressedOops
     bool UseCompressedOops   = false

G1垃圾回收器

java大内存进程使用G1更有优越性,没有survivor的浪费和fgc易导致cpu飙高,G1的大部分参数不需要设置,jvm会自动动态优化。


-XX:+UseG1GC -Xss10m -XX:MaxGCPauseMillis=800 -XX:ParallelGCThreads=15 -XX:ConcGCThreads=4
使用G1时不要配置-Xmn和-XX:NewRatio。(参照http://www.oracle.com/technetwork/articles/java/g1gc-1984535.html)

Young Generation Size: Avoid explicitly setting young generation size with the -Xmn option or any or other related option such as -XX:NewRatio. Fixing the size of the young generation overrides the target pause-time goal.

-Xss10m线程最大栈设置,如果出现过stackoverflow,需要调大此参数,我们es的线程数不多可以适当调大(pstree -p [pid] | wc -l);堆大小不变该参数调大则能创建的线程数将减少。
-XX:MaxGCPauseMillis默认200,后台任务不追求最快响应时间,追求最大吞吐量需适当调大
-XX:ParallelGCThreads设为cpu的逻辑核数,如果逻辑核数超过8则设为5/8,我们机器是24个逻辑核,所以设为15
-XX:ConcGCThreads设为-XX:ParallelGCThreads的1/4

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值