ESのJVM配置

1725 ワード

JDKバージョン
JDK 1.8の最新バージョンjdk-8 u 131-linux-x 64.tar.gzを使用しています(公式推奨ES 5.4.1はjdk-8 u 131以上のバージョンを使用しています。私達は今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インスタンスのメモリ割り当ては32 Gを超えないでください。jdk 1.8は-Xms 32766 m-Xmx 32766 mに構成されています。具体的な原因はオブジェクトポインタ圧縮技術です。
$ 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
G 1ゴミ回収器
java大メモリプロセスはG 1を使うとより優越性があり、survivorの浪費とfgcがないとcpuが暴発しやすく、G 1の大部分のパラメータは設定する必要がなく、jvmは自動的に動的に最適化されます。

-XX:+UseG1GC -Xss10m -XX:MaxGCPauseMillis=800 -XX:ParallelGCThreads=15 -XX:ConcGCThreads=4
G 1を使用するときは-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.
-Xss 10 mスレッドの最大スタックの設定で、もしstackoverflowが発生したら、このパラメータを大きくする必要があります。私達のesのスレッド数は多くないので、適当に大きく調整できます。このパラメータを大きくすると作成できるスレッド数が減少します。
-XX:MaxGCPauseMillisデフォルト200、バックグラウンドタスクは最速応答時間を求めず、最大スループットを追求するには適切な調整が必要です。
-XX:ParalelGCThreadsはcpuの論理核数として設定し、論理核数が8を超えると5/8に設定します。私達のマシンは24の論理核ですので、15に設定します。
-XX:ConcGCThreadsは-XXに設定します。ParalelGCThreadsの1/4