
Elasticsearchクラスタを調整していますが、一貫していないメモリ使用量が見つかりました。free
私のインスタンスで " "を実行する:
free
total used free shared buff/cache available
Mem: 30881324 17072320 238216 49736 13570788 13313528
Swap: 0 0 0
30GB
我々はそれをマシンで見る。
ESは、利用可能なメモリの50%(またはOOPのために最大30 GB)を使用するように調整されました。ここで確認でき、-Xms
フラグ-Xmx
は次のように設定されています15078m
。
/bin/java -Xms15078m -Xmx15078m -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch -server -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -XX:+HeapDumpOnOutOfMemoryError -Des.path.home=/usr/share/elasticsearch -Des.path.conf=/etc/elasticsearch -Des.distribution.flavor=default -Des.distribution.type=rpm -cp /usr/share/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch -p /var/run/elasticsearch/elasticsearch.pid --quiet
しかし、「トップ」を実行すると、別の話が表示されます。
%MEM
に配置すると、複数回59%
表示されます(nagios警告トリガー)。85%
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
24366 elastic+ 20 0 54.9g 17.5g 1.6g S 267.7 59.3 1849:57 java
答え1
ヒープサイズを15 GBに制限しましたが、JVMはそれ以上、つまりスタックとベースメモリを使用し、その一部はJVM(メタスペース)で管理されています。
このpmap -x <pid>
コマンドは、追加の2.5 GBが使用されている場所(スタック、ヒープ)を識別するのに役立ちます。
このps -o nlwp <pid>
コマンドはスレッド数を提供します。あなたの場合、各スレッドは1MBのメモリを消費するため、1000個のスレッドは1GBを使用します。
このjstat -gc <pid>
コマンドは、MU列の下に使用されているメタスペースのサイズを表示します。
メタスペースでメモリを使用している場合は、次のオプションを使用してメモリを制限できます。
-XX:MaxMetaspaceSize=1g