【问题标题】:Elastic Search + twitter river - how many machines do I need?Elastic Search + twitter River - 我需要多少台机器?
【发布时间】:2013-12-03 10:16:42
【问题描述】:

我正在运行一个弹性搜索服务器以及 twitter River,以从 twitter 公共流中下载数据。最近,我添加了大约 40 条过滤后的河流,它们跟踪了 40 个与我的体验相关的不同关键词。但是,这导致服务器变得相当缓慢。当我在服务器上做一个顶部时,它总是显示 > 100% 的 CPU 消耗。

我的问题是,对于这样的系统,我需要多少台机器。每天下载的数据量为几 GB。目前,我在具有 8GB 内存的单个 8 核机器(Intel(R) Xeon(R) CPU E31280 @ 3.50GHz)上运行它。

另外,现在我有大约 800 个未分配的分片中的大约 437 个。我已经尝试重新启动服务器很多次,但它们仍然没有被分配。

【问题讨论】:

    标签: twitter elasticsearch


    【解决方案1】:

    假设 elasticsearch 被配置为使用比您列出的默认内存机器规格更多的东西(除非您的磁盘可能真的很慢?) - 我已经能够用更少的内核和内存做类似的事情,但使用 ssds 进行存储没有副本的数据进入单个分片索引(此时不是生产数据,我可以丢失)。

    您是否尝试过将数据索引到没有副本的单个分片索引或 5 个分片索引?不知道为什么单个节点上有 800 个分片,除非您计划将集群扩展到许多机器或有其他要求,例如必须有许多索引。您在该节点上有多少个索引?

    此外,您能否将 40 个关键字放在单个过滤的流河中 - 如果所有数据都进入单个索引,这可能会减少河流的 CPU 使用率并且应该收集相同的数据。

    【讨论】:

    • 是的,删除索引并为所有 4o 关键字创建一个索引就可以了。
    【解决方案2】:

    我想为了获得最佳性能和可靠性,应该:

    • 每个索引至少有一个副本
    • 几个分片可以在几个物理服务器上使用单个数据库

    默认配置 5 shards / 1 replica 看起来不错,考虑到应该在少数服务器上使用的重负载系统 索引 * 每个索引的分片数 * (replicas + 1) 应该不少于然后是用于 DB 托管的服务器数量

    单个节点中的分片总数肯定不超过几十个,因此考虑到每个关键字的数量,最好不要为每个关键字使用单独的索引。

    【讨论】:

      猜你喜欢
      • 2011-08-29
      • 2015-07-03
      • 1970-01-01
      • 1970-01-01
      • 2014-06-02
      • 1970-01-01
      • 1970-01-01
      • 2017-02-13
      • 2016-07-28
      相关资源
      最近更新 更多