ログ可視化ツールの 3 点セット、Fluentd + Elasticsearch5 + Kibana5 を試すメモ 5 回目。前回は Elasticsearch に登録されてから一定期間を過ぎたログを自動的に削除するところをやりました。
-
Curator4でElasticsearch5の古いインデックスを削除する
ログ可視化ツールの 3 点セット、Fluentd + Elasticsearch5 + Kibana5 を試すメモ 4 ...
続きを見る
これまでの状態で Elasticsearch をしばらく動作させていると、Kibana が応答しなくなる現象が発生しました。調べてみると Kibana ではなく Elasticsearch がメモリ不足で落ちている様子。Elasticsearch を動作させているマシンのメモリは 2GB。
低スペックのサーバでも動作させられるように Elasticsearch のメモリ使用量を減らす方法を調べました。
目次
Elasticsearch のデフォルトのメモリ使用量は 2GB くらい
elasticsearch マシンのメモリを一時的に 4GB に増やして Elasticsearch のメモリ使用量を調べてみると、起動直後のメモリ使用量は 2.2GB でした。
$ top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1052 elastic+ 20 0 4786684 2.265g 15536 S 1.3 61.2 0:18.20 java
Java VM のヒープサイズを調整する
Set JVM heap size via jvm.options | Elasticsearch Reference によると、Java のヒープサイズは搭載メモリの 50% 以下にするのがよいとのこと。
Set Xmx to no more than 50% of your physical RAM, to ensure that there is enough physical RAM left for kernel file system caches.
Java のヒープサイズといえば起動オプションの Xms や Xmx ですね。起動オプションを指定する方法は Configuring system settings | Elasticsearch Reference に書かれています。
/etc/elasticsearch/jvm.options (when installing from the Debian or RPM packages). This file contains a line-delimited list of JVM arguments, which must begin with -. You can add custom JVM flags to this file and check this configuration into your version control system.
/etc/elasticsearch/jvm.options
の Xms と Xmx を 1GB に変更します。
jvm.options
################################################################
## IMPORTANT: JVM heap size
################################################################
##
## You should always set the min and max JVM heap
## size to the same value. For example, to set
## the heap to 4 GB, set:
##
## -Xms4g
## -Xmx4g
##
## See https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html
## for more information
##
################################################################
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms1g
-Xmx1g
Elasticsearch 再起動
$ sudo systemctl restart elasticsearch.service
メモリ使用量が 1.2GB に減っています
$ top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1043 elastic+ 20 0 3720344 1.253g 15556 S 1.7 33.8 0:19.78 java
インデックスのキャッシュ量を調整する(未設定)
Fielddata | Elasticsearch Reference によると、インデックスのキャッシュは高速化のためメモリに乗るようです。
The field data cache is used mainly when sorting on or computing aggregations on a field. It loads all the field values to memory in order to provide fast document based access to those values. The field data cache can be expensive to build for a field, so its recommended to have enough memory to allocate it, and to keep it loaded.
今回はメモリ使用量に余裕があったので設定しませんでしたが、今後メモリ使用量が増えていくようであれば、上記リンクにある indices.fielddata.cache.size
パラメータや Circuit Breaker の設定を確認しようと思います。
次回は firewalld まわりをやります
-
Fluentd + Elasticsearch5 + Kibana5構築(6) firewalld設定編
ログ可視化ツールの 3 点セット、Fluentd + Elasticsearch5 + Kibana5 を試すメモ 6 ...
続きを見る