簡體   English   中英

Elasticsearch 延遲

[英]Elasticsearch Latency

我正在使用 Elasticsearch 的 MultiSearch API 一次為我的一個端點發出多個搜索請求。 我的理解是這些請求是並行完成的,但是我的端點的延遲隨着我通過 API (<50) 發出的搜索請求的數量而增加。 我有兩個問題:

  • 為什么會發生這種延遲增加/多重搜索在幕后如何工作? 我是 Elasticsearch 的新手,對我在這里缺乏知識表示歉意。
  • 有哪些方法可以在保持多重搜索的同時改善延遲?

為了提供更全面的答案,最好了解您的集群設置。

這些請求確實是並行完成的,但您的集群仍然有其局限性。

我認為可能發生的情況是您可能沒有足夠的搜索線程來並行處理那么多搜索,並且您的搜索線程池開始排隊。

https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-threadpool.html

因此,例如,如果您發出一個 MultiSearch 查詢,假設有 10 個搜索查詢,其中每個查詢將命中 15 個分片,這意味着整個查詢總共需要 150 個搜索線程。 如果有其他搜索正在運行並且集群沒有可用的搜索線程 - 它們將開始排隊,如果隊列變得太大,最終可能會拒絕。

你能為這個做什么?

  • 仔細查看索引設置、它們的number_of_shards分片和索引大小。 減少number_of_shards將需要更少的搜索線程。 number_of_shards和索引大小及其文檔計數之間找到平衡點。 如果文檔少於 5M,則將所有內容保存在單個 shard 中,否則,嘗試使用 3M-5M 文檔的 shard,例如 23M 文檔的索引可以使用 5 或 6 個 shard。
  • 通過添加新節點水平擴展集群,這將添加新的搜索線程
  • 調整默認線程池設置(這通常是你要做的最后一件事)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM