2017-11-20 11 views
0

データセットは次のとおりです。大きな静的インデックスのパフォーマンスを調整しますか?

  • 約8百万のドキュメント。大きな変化は期待していません。長期的には最大でも10百万である。 ESに専用の16ギガバイトで5つのデータノード、8つのコアおよびSSD
  • 25シャード、2つのレプリカ

文書が頻繁に更新され、一日一回:プライマリー断片

  • クラスタの
  • 150ギガバイトのストレージ平均して

    クエリは非常に単純です:地理用語(S)フィルター、主に。 要求されたデータセットは、ES規格(各検索のために要求された100〜1000の文書)のためにかなり大きいです。

    要求時間が200ミリ秒以上を取るほとんどの要求で、予想以上に道に遅いです。

    elasticsearch's cluster monitoring

    ノードの構成が標準である: 監視ツールは、ノードが完全に微細であることを示しています。デフォルト設定にはbootstrap.memory_lock: trueが追加されました。

    より高速な検索を持っているために、最初のステップは何ですか?インデックス作成時間は問題ではありません。速い検索がインデックス作成時間が遅いことを意味するならば、それはすべて良いです。

    私の最初の推測では、破片の数でプレーするだろうか?ほかに何か ?私は/絞り込んで次の手順を実行したい

  • 答えて

    1

    は、問題の原因を除外:

    1. は、例えば、ホスト/ JVMのためのより多くの統計情報を収集しますGCアクティビティ、IO統計などを使用して、疑わしいものがないかどうかを確認します。
    2. 摂取は潜在的にパフォーマンスに影響を与える要因としてインデックスを除外するために実行せずにテストします。クラスタ全体の負荷を軽減するためにインデックス作成を微調整するのに役立つ場合は、indexing optimization
    3. を参照してください。 10より大きい結果セットを使用した経験から、顕著なレイテンシが追加される可能性があります。
    4. を試してみてください。この時間は、どこで時間を費やされたかを把握するのに役立ちます。これは、最適化できるクエリの問題のある部分を特定するのに役立ちます。
    5. 一般的な検索パフォーマンスチューニングの推奨事項については、search optimizationをご覧ください。
    1

    800万人のドキュメントが150GBのデータ(プライマリシャード)を作成するので、平均ドキュメントサイズは約19KBですか?最悪の場合に1000を得た場合、それは19MBです。私はちょうど200ミリ秒かかると驚いています...

    012msの時刻は200msですか、それとも既にクライアントにありますか?とにかく、10の結果に対してどのくらいの時間がかかるかは興味深いでしょう。そして、あなたが本当に多くの結果を本当に必要とするかどうかは疑問です。

    はい、実際にどのくらいの違いがあるかをテストする必要がありますが、あなたのシャード数は少し高いです(10は多分多分5でもよいかもしれません)。

    +0

    はい、200msは結果セットの中で '取られました。 要求されたドキュメントが10個だけである同じクエリは、実際には50msほど高速です。 アドバイスをいただきありがとうございます。 – Phalaenopsis

    関連する問題