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

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐