Posted at

ElasticsearchでOutOfMemory

More than 3 years have passed since last update.


あれ

Kibanaで使っているElasticsearchが動いてないなと思って見てみたら、OutOfMemoryErrorが出てました。


OutOfMemory

「あれー、メモリ多めのサーバで動かしてるんだけどなあ」とかボケてたら、ちゃんと書いてました公式に。

https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration.html

要は、起動時にヒープサイズをちゃんと確保してスワップさせるな、ということらしい。ちなみにデフォルトは1g。

ということでES_HEAP_SIZEで多めに指定して再起動。無事復旧。


File Descriptors

安心してから数時間後、今度は「Too many open files」で落ちてる。これも上記の公式ドキュメントに書いてますな。

ということで、以下を実行してまずは調査。

curl localhost:9200/_nodes/process?pretty

レスポンス見てみたら、max_file_descriptors=1024。公式では32kか64kを推奨しているのでこれは少ない。

ulimit -n

あーそもそも上限が1024のままだ。ということで以下を実行してからElasticsearchを再起動。

ulimit -n 65535

これでひとまず安定しました(ulimitだとサーバ再起動で元に戻っちゃうけど、それはまた別途対応)。


余談

調べててわかったのが、この2つはElasticsearchの運用の初歩だったみたいで、自分の不勉強を再認識しました。ElasticsearchはKibanaだけじゃなくてサービスでも使っていくので、運用ノウハウはちゃんと勉強しつつ実運用を通して溜めていきたいところです。