Elasticsearchで色々やったことをメモ
大量のデータをElasticsearchで扱ったときに色々と起きた問題の対処をメモ(雑)
Elasticsearch v1.0.1
Amazon EC2
JDK 1.7.0_21
問題
データ量が多くなってから検索系のクエリを投げるとElasticsearchが停止する
indexを日付別に切っているが、結構な日数分を集計するクエリを投げるとOOMになってしまった。
原因(多分)
kibanaのクエリが結構エグい
色々なグラフを1画面に乗せておくと1回のリロードで大量のクエリがElasticsearchに投げられていた。
根本解決にはならないけど、kibanaの1画面に乗せる画面数を減らした
フィールドキャッシュの上限が無制限だった
設定ファイルで指定してあげないとキャッシュがひたすら溜まって行く模様だった。
indices.fielddata.cache.expire
indices.fielddata.cache.size
を設定してあげた。
あとシャード数を増やしてサーバ台数も増設して1台あたりの負荷を分散させた。
CPUリソースが足りない
びっくりするくらい検索にCPUを使っていたので、EC2インスタンスタイプをCPU上げた。
ただ最終的には設計から見直して検索によく使う部分を入れるindexを作って、そのindexに登録されるデータ量を減らしたら劇的にCPUを使わずに検索出来るようになった。
大量のデータが存在するindexに検索にかけないように設計しなきゃダメ。
まとめ中