ローカルのdockerで3台のElasticsearchのクラスターを構成したい
必要な設定をdocker-compose.ymlに書いて起動したところ2つのノードで以下のエラーが発生した
elasticsearch ERROR: Elasticsearch exited unexpectedly, with exit code 137
エラーコード137を調べてみると、OOMが発生しているとのこと
デフォルトでは、Elasticsearch はノードのロール(masterなど)と合計メモリに基づいて JVM ヒープのサイズを自動的に設定しているらしい
Important Elasticsearch configuration | Elasticsearch Guide [7.11] | Elastic
おそらくこれが大きすぎて3台構成にできないようだ
唯一立ち上げられたESコンテナに入ってメモリの使用量を見たところ以下であった
$ docker exec -it my-elasticsearch2-1 /bin/bash elasticsearch@08957ea510f4:~$ free total used free shared buff/cache available Mem: 7112116 4440820 2142892 134488 528404 2225204 Swap: 1048572 404412 644160
7GB中1台で約4GB使っていて、ホスト上で利用可能な残りが2GBなので、あと2台立ち上げるのは確かに難しそう
ということで、JVM ヒープのサイズを手動で設定する
とりあえずdocker-compose.ymlにあるESの設定で、ES_JAVA_OPTSのXmsとXmxをそれぞれ500MBにしてみた
environment: ES_JAVA_OPTS: -Xms500m -Xmx500m
これで立ち上げてみると、うまく立ち上がった
メモリの使用量は3台立ち上げて以下のようになった
elasticsearch@a92672ae3251:~$ free total used free shared buff/cache available Mem: 7112116 3520796 2988720 134720 602600 3133796 Swap: 1048572 329916 718656
OOMにならず起動できたようだ