先日 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 はともに公式パッケージを使用。

対処方法

/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 のアラート期間です。

対応前(24hours)

java(Elasticsearch のプロセス)のメモリ使用量が減っているのが興味
深いところです。Elasticsearch はシステムメモリの半分を使う ようなの
で。

対応後

橙色の Node.js プロセスのメモリ使用量が増え続けなくなりました。

対応後(24hours)

拡大すると一目瞭然。"–max-old-space-size=256" だと 260〜270MB 程
度で GC されるようです。

対応後(12hours)