Elasticsearchの最大メモリサイズを変更する方法


99

Elasticsearchのデフォルト構成のApacheサーバーを使用していますが、デフォルト構成の最大サイズが1GBであることを除いて、すべてが完全に機能します。

Elasticsearchに保存するドキュメントがそれほど多くないので、メモリを減らしたいと思います。

-XmxJava構成のパラメーターを変更する必要があることを確認しましたが、その方法がわかりません。

私はこれを実行できることを見ました:

bin/ElasticSearch -Xmx=2G -Xms=2G

しかし、Elasticsearchを再起動する必要がある場合、これは失われます。

Elasticsearchがサービスとしてインストールされている場合、最大メモリ使用量を変更することはできますか?


どのオペレーティングシステムとバージョン?Elasticsearchバージョン?Elasticsearchをどのようにインストールしましたか?
James Addison

1
レプリカとシャードの数を1ノードのセットアップに含める利点がindex.number_of_shards: 1 index.number_of_replicas: 0 ないため、少なくすることをお勧めします。これを/etc/elasticsearch/elasticsearch.yamlに追加します。 これにより、不要な作業を行わずにメモリとCPUを節約できます。 。
neo112 2016

回答:


127

ElasticSearch> = 5ドキュメントがいる変更上記の回答のどれも私のために働いていないことを意味します。

私は変更しようとしたES_HEAP_SIZE/etc/default/elasticsearchしてでetc/init.d/elasticsearchはなく、私が実行したときにps aux | grep elasticsearch出力がまだありました:

/usr/bin/java -Xms2g -Xmx2g # aka 2G min and max ram

私はこれらの変更をしなければなりませんでした:

/etc/elasticsearch/jvm.options

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms1g 
-Xmx1g 
# the settings shipped with ES 5 were: -Xms2g
# the settings shipped with ES 5 were: -Xmx2g

3
Mac OS 10.12のElasticsearch 5.2の場合、このファイルは/usr/local/opt/elasticsearch/libexec/config/jvm.options
victorpolko 2017年

1
私は(RPMでインストール)AWS AMIインスタンスが、最初の設定MAX_LOCKED_MEMORY =無制限では/ etcのためにこの作品を確認することができます/のsysconfig / elasticsearchとbootstrap.memory_lock:/etc/elasticsearch/elasticsearch.ymlで真
モルク

2
これは、Windowsでの作業をしない-正しい答えはここにある:stackoverflow.com/questions/28798845/...
CBP

3
自作インストールの場合、ファイルはここにある:/usr/local/etc/elasticsearch/jvm.options
Milovan Zogovic

117

2016年11月24日に更新:Elasticsearch 5は明らかにJVMの構成方法を変更しました。こちらの回答をご覧ください。以下の答えは、バージョン5未満にも当てはまります。

tirdadc、以下のコメントでこれを指摘してくれてありがとう。


メモリとESについて疑問に思っているときに他の人と共有するペーストビンページがあります。私にとっては問題なく動作します:http : //pastebin.com/mNUGQCLY。ここにもコンテンツを貼り付けます。

参照:

https://github.com/grigorescu/Brownian/wiki/ElasticSearch-Configuration http://www.elasticsearch.org/guide/reference/setup/installation/

次のファイルを編集して、メモリとファイル数の制限を変更します。これらの手順は、Ubuntu 10.04を想定しており、それ以降のバージョンおよび他のディストリビューション/ OSで動作する可能性があります。(編集:これはUbuntu 14.04でも機能します。)

/etc/security/limits.conf

elasticsearch - nofile 65535
elasticsearch - memlock unlimited

/ etc / default / elasticsearch(CentOS / RHでは/ etc / sysconfig / elasticsearch)

ES_HEAP_SIZE=512m
MAX_OPEN_FILES=65535
MAX_LOCKED_MEMORY=unlimited

/etc/elasticsearch/elasticsearch.yml

bootstrap.mlockall: true

4
これはよさそうだ。ES_HEAP_SIZEの決定に関する次のアドバイスもあります。経験則では、ElasticSearchヒープにはマシンで使用可能なメモリの約50%が必要です。ElasticSearchはシステムキャッシュを大量に使用するため、十分なメモリを残しておく必要があります。(asquera.de/opensource/2012/11/25/…から)
Tom

17
CentOSでは、/etc/default「/ etc / sysconfig」の下に記載されている構成が表示されます
Nishant

5
CentOS /etc/sysconfig/elasticsearchでは、これらの変更を行うのに適切な場所です。RPMは、このファイルのデフォルトバージョンも提供しています。
slm

5
これはElasticsearch 5には適用されなくなりました。この答えが必要です。
tirdadc 2016年

2
これは良さそうですが、特に/etc/security/limits.d/elasticsearch.conf
elasticsearch

26

Centos 7またはSystemDを実行している別のシステムでこれを実行したい人は、

/etc/sysconfig/elasticsearch 

ES_HEAP_SIZE行のコメントを外して、次のような値を設定します。

# Heap Size (defaults to 256m min, 1g max)
ES_HEAP_SIZE=16g

(1g maxに関するコメントは無視してください-これがデフォルトです)


追加する必要があります:上記のアプローチをCentOS 7のES 1.7で試しましたが、効果がありませんでした
Jonesome Reinstate Monica 2015

1
@Jonesome何を提案できるかわからない-私はCentOS 7のES RPMパッケージからES 1.7.1を実行していて、それがこのファイルが存在するパスであり、ES_HEAP_SIZEを変更すると意図したとおりに機能します。

9

の手順ubuntu 14.04

sudo vim /etc/init.d/elasticsearch

セットする

ES_HEAP_SIZE=512m

次に:

sudo vim /etc/elasticsearch/elasticsearch.yml

セットする:

bootstrap.memory_lock: true

詳細については、ファイルにコメントがあります


9

私の場合、以前の回答は不十分でした。おそらく私がDebian 8を使用しているためです。以前のディストリビューションが参照されていたためです。

のDebian 8で正常に場所をサービススクリプトを修正/usr/lib/systemd/system/elasticsearch.serviceし、追加Environment=ES_HEAP_SIZE=8G だけで、他の「環境= *」の行の下に。

でサービススクリプトをリロードし、サービスsystemctl daemon-reloadを再起動します。仕事が完了するはずです!


1
ありがとう、あなたは私の日を救います!はい、これはDebian 8の正しい手順です
fast2b

これを構成する以外にファイルを変更する場所はありません/usr/か?
マーティン・シュローダー

6

https://github.com/elasticsearch/elasticsearch-servicewrapperにあるElasticsearchのGithubリポジトリで提供されるサービスラッパーを使用する場合、elasticsearch-servicewrapper / service / elasticsearch.confのconfファイルがメモリ設定を制御します。elasticsearch.confの上部にはパラメーターがあります。

set.default.ES_HEAP_SIZE=1024

Elasticsearchに割り当てられたメモリを減らすには、このパラメーターを減らして、「set.default.ES_HEAP_SIZE = 512」と言います。

elasticsearch-wrapperを使用する場合、elasticsearch.confで提供されるES_HEAP_SIZEが他のすべての設定をオーバーライドすることに注意してください。ドキュメンテーションから、ヒープメモリはelasticsearch.ymlから設定できるように思えたので、これを理解するのに少し時間がかかりました。

Jamesの例のように、サービスラッパー設定が/ etc / default / elasticsearchなどの別の場所に設定されている場合は、そこにES_HEAP_SIZEを設定します。


2
サービスがない場合はどうなりますか?(つまり、単にbin / elasticsearch -dを実行します)
Henley Chiu


@HenleyChiuは、ES_HEAP_SIZE環境変数を設定してから実行します。ieexport ES_HEAP_SIZE=1G; bin/elasticsearch -d
Andrey Regentov

ES 1.7.xストックelasticsearch.conf(CentOSのrpmによってインストールされるもの)には、set.defaultがまったくありません。このアプローチはES 1.7で機能しますか?
Jonesome Reinstate Monica、2015

上記の答えは誤解を招くものです。/ etc / sysconfig / elasticsearchでES_HEAP_SIZEを設定します
Jonesome Reinstate Monica 2015

6

提供されているRPM / DEBパッケージを使用してESをインストールした場合(ご存知のように)、initスクリプト(/etc/init.d/elasticsearch on RHEL/CentOS)を編集してこれを調整できます。ファイルを確認すると、次のブロックが表示されます。

export ES_HEAP_SIZE
export ES_HEAP_NEWSIZE
export ES_DIRECT_SIZE
export ES_JAVA_OPTS
export JAVA_HOME

サイズを調整するには、ES_HEAP_SIZE行を次のように変更します。

export ES_HEAP_SIZE=xM/xG

(xは、割り当てたいRAMのMB / GBの数です)

例:

export ES_HEAP_SIZE=1G

1GBを割り当てます。

スクリプトを編集したら、保存して終了し、サービスを再起動します。次のコマンドを実行して、正しく設定されているかどうかを確認できます。

ps aux | grep elasticsearch

そして、以下を返すJavaプロセスで-Xmsフラグと-Xmxフラグをチェックします。

/usr/bin/java -Xms1G -Xmx1G

お役に立てれば :)


1
このようにしないでください。これは、この種の変更を行うのに適した場所ではありません。これは巨大なハックです!動作する可能性がありますが、ESが更新されるたびにゴミ箱に入れられる可能性があります。
slm 2015

1
追加する必要があります:上記のアプローチをCentOS 7のES 1.7で試しましたが、効果がありませんでした。
Jonesome Reinstate Monica、2015

3
  • Elasticsearchは、Xms(最小ヒープサイズ)およびXmx(最大ヒープサイズ)設定を介して、jvm.optionsで指定されたヒープ全体を割り当てます。
    • -Xmx12g
    • -Xmx12g
  • 最小ヒープサイズ(Xms)と最大ヒープサイズ(Xmx)が互いに等しくなるように設定します。
  • Xmxを、JVMが圧縮オブジェクトポインター(圧縮oops)に使用するカットオフより上に設定しないでください。正確なカットオフはさまざまですが、32 GB近くです。

  • 環境変数を使用してヒープサイズを設定することもできます。

    • ES_JAVA_OPTS = "-Xms2g -Xmx2g" ./bin/elasticsearch
    • ES_JAVA_OPTS = "-Xms4000m -Xmx4000m" ./bin/elasticsearch

また、物理RAMの50%以下
Achi Even-dar

こんにちは私はこのように環境変数を設定します。変数名はES_JAVA_OPTSで、値は次のとおりです。 "-Xms2g -Xmx2g" ./bin/elasticsearch like
Manikandan

また、ヒープサイズが正しく更新されたことを確認する方法
マニカンダン

2

elasticsearchパスのホームディレクトリには/usr/share/elasticsearch、通常、設定ファイルがありますbin/elasticsearch.in.sh。編集パラメータES_MIN_MEMES_MAX_MEM変更するには、このファイルでは-Xms2g-Xmx4gそれぞれ。また、この構成変更後にノードを再起動したことを確認してください。



1

elasticsearch 2.xでは:

vi /etc/sysconfig/elasticsearch 

コードのブロックに移動します

# Heap size defaults to 256m min, 1g max
# Set ES_HEAP_SIZE to 50% of available RAM, but no more than 31g
#ES_HEAP_SIZE=2g

最終行のコメントを解除

ES_HEAP_SIZE=2g
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.