「メモリーは、Elasticsearch を使用する場合に不可欠ですが、限られたリソースです。これは、Lucene が使用可能なすべてのメモリを使用するためです。ただし、メモリ設定を誤って構成すると、パフォーマンスが低下し、メモリの使用効率が低下する可能性があります。」
このチュートリアルでは、Elasticsearch を使用する場合の最大および最小の JVM ヒープ サイズの構成を示します。
始めましょう。
ヒープメモリとは?
Elasticsearch のコンテキストでは、ヒープ メモリは、Elasticsearch ノード内の Java 仮想マシンに割り当てられたメモリの合計量を指します。
Elasticsearch は、ベース システムの合計メモリとノードの役割に基づいて、デフォルトで JVM ヒープ サイズを設定します。つまり、ヒープ メモリ サイズの割り当ては、マスター ノード、データ、取り込み、data_cold などによって異なる場合があります。
ほとんどの実稼働環境では、Elasticsearch がヒープ サイズを管理できるようにすることが推奨されており、十分すぎるほどです。
ノート : Docker で Elasticsearch を実行している場合、合計ヒープ メモリは、Docker のホストではなく、Docker コンテナーの合計サイズに基づいています。
最小および最大ヒープ サイズの構成
最小および最大のヒープ サイズを構成するには、Xms パラメーターと Xmx パラメーターを使用できます。 Elasticsearch プロビットは、最大メモリを合計メモリの 50% 以下に設定しています。これは、JVM ヒープとは別に、Elasticsearch がファイルシステム キャッシュやネットワーク通信などの他の操作のために、より多くのメモリを必要とするためです。同様に、JVM は残りの 50% メモリのセクションを使用します。
次に、xms と xmx の値を oops のしきい値よりも大きく設定しないでください。安全な構成のために、一部のシステムでは 26GB または 30GB に制限してください。
しきい値は Elasticsearch ログで確認できます。
猫elasticsearch.log | grep 'オブジェクト ポインタ'次のようなエントリが表示されます。
[2022-08-19T20:01:50,275][INFO][o.e.e.NodeEnvironment ] [debian11] ヒープサイズ [1.9gb]、圧縮された通常のオブジェクトポインタ [true][2022-08-19T20:08:07,207][INFO][o.e.e.NodeEnvironment ] [debian11] ヒープサイズ [1.9gb]、圧縮された通常のオブジェクトポインタ [true]
[2022-08-19T20:36:47,244][INFO][o.e.e.NodeEnvironment ] [debian11] ヒープサイズ [1.9gb]、圧縮された通常のオブジェクトポインタ [true]
xms および xmx 値のノード情報 API を照会することもできます。
curl -X GET localhost:9200/_nodes/_all/jvm?pretty次のような出力が表示されます。
最小および最大ヒープ サイズの設定
JVM ヒープ サイズの値を変更するには、/etc/elasticsearch/jvm.options.d ディレクトリに構成ファイルを追加する必要があります。このファイルは .options 拡張子で終わる必要があります。
例えば:
$ sudo touch /etc/elasticsearch/jvm.options.d/heap.optionsファイルを編集する
$ sudo nano /etc/elasticsearch/jvm.options.d/heap.options必要な最小ヒープ メモリ サイズと最大ヒープ メモリ サイズを追加します。
たとえば、以下のエントリは最小および最大ヒープ サイズを 4GB に設定します。
ファイルを保存し、Elasticsearch サービスを再起動します。
結論
このチュートリアルでは、Elasticsearch のコンテキストでの JVM ヒープ、Elasticsearch が JVM ヒープを構成する方法、およびヒープ サイズを変更する方法について学習しました。
読んでくれてありがとう!!