ElasticsearchでToo many open filesエラーが出た時の対処法
作成日:2017年1月11日 | 更新日:2020年5月21日
■対象OS
Linux
■対象ビルド
11025以降
Elasticsearchは処理スピード向上のため、同時に複数のデータのインデックス処理を行い、データの結合とインデックス処理を並行して実施します。この処理の際に大量の*1ファイルディスクリプタをオープンにする必要がありますが、Linuxのデフォルト設定では最小設定がされているため、処理の途中で上限値を超えることで、Too many open filesエラーが発生し、Elasticsearchが動作を停止してしまう可能性があります。
*1ファイルディスクリプタ・・プログラムがアクセスするファイルや標準出入力をOSが識別するための識別子
本問題はEventLog Analyzerのインストールサーバーで設定されているファイルディスクリプタの制限値を増加させることで、回避することが可能です。なおファイルディスクリプタの制限値の変更方法の詳細については、各ベンダーへお問い合わせください。
※本ナレッジベースでは、以下の条件に基づき設定を行っています。
- 上限値は32000
- 全ユーザーを対象
- ソフトリミット/ハードリミット共に同じ値
上限値の種類には「ソフトリミット」と「ハードリミット」の2つがあります。
ハードリミットの場合は、上限値を超えそうになると即座にエラーを返し、ディスクへの書き込み処理を停止します。一方ソフトリミットの場合は猶予時間を設定することができ、猶予時間内であれば上限値を超えてもエラーを返しません。
ご注意:以下に記載しているのは、設定手順の一例になります。
対象OS:CentOS 6
< 設定手順(例) >
1.rootユーザーとしてログインします。
2."/etc/security/limits.conf"をvi等で編集します。
3.以下のパラメーターを追記します:
* soft nofile 32000
* hard nofile 32000
4.設定を保存してエディタを終了します。
5.su - を実行して再ログインします。
6.以下のコマンドを実行して、値が反映されているかを確認します:
# ulimit -n
手順は以上です。