【问题标题】:How to config elasticsearch cluster on one server to get the best performace on search如何在一台服务器上配置 elasticsearch 集群以获得最佳搜索性能
【发布时间】:2014-06-09 18:15:36
【问题描述】:

我是弹性搜索的新手。我有一个大约 300,000 个项目的 Elasticsearch 索引。对于另一个表中的 6000 万条记录中的每一条,我都需要对这个 ES 索引进行复杂的查询。

现在,它非常慢(进行 1000 次查询需要 200 秒)。我需要有关如何配置我的 elasticsearch 集群以处理大量查询的建议。

我的服务器:

8 core
8GB ram
SSD Hardware

我想配置 elasticsearch 来处理来自 ruby​​ 的 1000 个并发搜索请求。 (我想并行搜索 1000 个项目)。

我已尝试使用默认配置

我认为默认情况下,elasticesearch 只能处理大约 10-20 个并发搜索请求。它使用很少的cpu和ram。因此,我认为我可以改进它。

我只能从 ruby​​ 运行 100 个线程来搜索 1000 个项目,并且大约需要 200 秒。如果我从 ruby​​ 增加到 1000 个线程,ES 会返回超时错误消息。

我运行一个主节点

ES_HEAP_SIZE=2G

indices.fielddata.cache.size: 1g 

threadpool:   
   search:
      type: fixed
      size: 200
      queue_size: 400

shares: 5 

replicas: 1

从 ruby​​ 运行 100 个线程来搜索 1000 个项目仍然需要 200 秒。

我在此服务器上添加了 3 个新节点作为数据节点。

从 ruby​​ 运行 100 个线程来搜索 1000 个项目仍然需要 200 秒或更长时间。

我用谷歌搜索并阅读了一些帖子。人们说创建更多分片会使搜索变慢。

如何改进我的搜索查询?

非常感谢!

【问题讨论】:

  • 您能提供您的搜索查询吗?
  • 正如您提到的,通过对配置的最小更改,查询性能得到了提高,如果您可以在更改后分享更改和性能,将会很有帮助
  • @gsuresh92:我大约一年前完成了这项任务,所以我现在没有详细信息。我可以分享一些关键点:将/etc/security/limits.conf 的最大打开文件增加到 65k 或 100k。将机器上的ES_HEAP_SIZE 增加到 50% 内存。如果你想改进并行搜索,你可以增加threadpool.search.size。当您增加此值时,您可能会看到许多查询失败,因此增加 threadpool.search.queue_size 可能会有所帮助,但查询的平均时间会增加
  • @gsuresh92:我建议检查以下答案中的链接。对我当时使用 ES Cluster 很有帮助
  • @MinhHa 非常感谢 :)

标签: multithreading search elasticsearch config network-shares


【解决方案1】:

你会想看这个视频:

http://www.elasticsearch.org/webinars/elasticsearch-pre-flight-checklist/

ES 的默认值非常适合开发,但不适用于生产。您真正需要做的一件事是为 JVM 提供服务器上 50% 的可用内存。该视频还有许多其他很棒的技巧。

【讨论】:

  • 感谢您的建议,这个视频很有帮助。我将尝试配置我的 ES 服务器以查看它是如何工作的。我无法投票,因为我是 stackoverflow 的新手。
  • 我按照视频中的一些提示进行操作,我发现我的集群现在更好了。但是当我从 ruby​​ 运行搜索作业时(同时有 500 个搜索请求)。我看到 ES 使用非常少的 CPU(只有 10%)。我使用 4 个节点。不知道为什么 ES 不占用太多 CPU
  • @MinhHa 检查磁盘 I/O(在 Linux 上你可以使用 iotop)。也许cpu只是在等待磁盘加载数据
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-27
  • 2012-02-24
  • 1970-01-01
  • 2020-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多