先日 Elasticsearch
を 1.7.5 から 2.3.3 に、Kibana
を 4.1.2 から
4.5.1 にアップデートしました。
アップデート自体はそれなりにハマったものの、なんとか対処できました。
ただ、Kibana のメモリ使用量が増え続け、さながらメモリリークのよう
でした。
こちらの記事の方法で解決できたので、結果とともに記録します。
ver4.2以降のkibanaが突然死する問題について - mnatsu31’s blog
環境
OS: Ubuntu-14.04 LTS
Memory: 2GB
Elasticsearch: 2.3.3
Kibana: 4.5.1
※ Elasticsearch と Kibana はともに公式パッケージを使用。
- Repositories|Elasticsearch Reference [2.3]|Elastic
- Getting Kibana Up and Running|Kibana User Guide [4.5]|Elastic
対処方法
/etc/init.d/kibana を以下のように変更し、"$ service kibana
restart" しました。本当はこのファイルは構成管理したくないのですがね…。
--- /etc/init.d/kibana_orig 2016-06-25 13:03:43.000000000 +0900
+++ /etc/init.d/kibana 2016-06-26 10:13:28.000000000 +0900
@@ -18,6 +18,9 @@
PATH=/sbin:/usr/sbin:/bin:/usr/bin
export PATH
+NODE_OPTIONS="--max-old-space-size=256"
+export NODE_OPTIONS
+
name=kibana
program=/opt/kibana/bin/kibana
args=''
前述の記事によると Kibana (というか Node.js)は 1.5GB を超えるま
でメモリを確保し続けるそうです(一次情報は見つけられなかった)。
私の環境ではスワップアウトし続け、New Relic や Mackerel からアラー
トが飛び続けました…。
対応前
緑色の Node.js のプロセスのメモリ使用量が増えていくのが分かると思
います。赤の縦線は New Relic のアラート期間です。
java(Elasticsearch のプロセス)のメモリ使用量が減っているのが興味
深いところです。Elasticsearch はシステムメモリの半分を使う
ようなの
で。
対応後
橙色の Node.js プロセスのメモリ使用量が増え続けなくなりました。
拡大すると一目瞭然。"–max-old-space-size=256" だと 260〜270MB 程
度で GC されるようです。