事例:Elasticsearchの性能改善
自社のサービス用システム用に開発したソフトウェアのログをElasticsearchで管理しているが、思ったように検索ができないということで相談を受けました。デージーネットで原因を探り、検証結果に基づいて使い方についてのアドバイスをさせていただきました。
- 導入企業業種
- ネットサービス
- ユーザー規模
- 100万人
- 実施時期
- 2016年9月
- お客様が悩まれていた課題
- 検索しても結果が出力されない
- Elasticsearchを導入してみたが、使い方が良く分からない
- どうしたら速くなるのか分からない
デージーネットが提案した「Elasticsearchの性能改善」
ベンチマークを実施しながら問題点を絞り込み
2016年5月頃に稼働を開始した自社サービスから、様々なデータが取れてくるが上手く解析ができないということで相談を頂きました。開発会社の勧めで、データはElasticsearchに保管してはいるものの、検索しても結果が出ないということでした。
利用方法をヒアリングし、疑似環境を構築
まず最初に、どのようなデータをElasticsearchに登録していて、検索をどのように行っているのかをヒアリングしました。また、検索結果が表示されない現象についても、実際に見せてもらいました。ヒアリング結果に基づき、デージーネット内にElasticsearchの疑似環境を作成しました。その結果、疑似環境でも同じような現象が出ることを確認しました。
データの取り出し方についての工夫
まずは、データを取り出すためには、どうすれば良いかを確認しました。その結果、Elasticsearchからデータが取り出せないわけではなく、単純に処理に時間が掛かっていることが分かりました。そのため、まずはデータを分割して、少しづつ取り出すことで表示できることを説明しました。
検索の高速化
また、Elasticsearchの検索自体を高速化する方法についても調査を行いました。Elasticsearchで使用するメモリの設定、インデックスの設定方法、データウィンドウの導入など、いくつかの方法を試しました。その結果、Elasticsearchの検索の性能を向上することができました。
Elasticsearchの構成に関する提案
Elasticsearchの検索の性能はある程度の向上ができましたが、まだ実用のためには遅い状況でした。デージーネットで調査したところ、Elasticsearchから大量のデータを取り出そうとしているため、検索ではなくElasticsearchから端末へのデータ転送で多くの時間が使われていることが分かりました。そのため、Elasticsearchから取り出すデータを少しでも限定することをお勧めしました。さらに、根本的な問題の解決のために、Elasticsearchの検索サーバの分散などのシステム構成の変更を提案しました。