Elastic Search + twitter river - 我需要多少台机器?

时间:2013-12-03 10:16:42

标签: twitter elasticsearch

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

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

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

2 个答案:

答案 0 :(得分:1)

假设弹性搜索被配置为使用超过默认的内存机器规格,你列出的应该是充足的(除非你的磁盘真的很慢?) - 我已经能够用更少的内核和内存做同样的事情但是使用ssds进行存储数据转到没有副本的单个分片索引(此时不是生产数据,我可以输掉)。

您是否尝试将数据索引到单个分片索引中,没有副本或5个分片索引?不确定为什么单个节点上有800个分片,除非您计划将群集扩展到许多计算机,或者有其他要求使得必须拥有许多索引。您在该节点上有多少个索引?

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

答案 1 :(得分:0)

我认为应该有最佳性能和可靠性:

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

默认配置5分片/ 1副本似乎相当不错,考虑到应该在少数服务器上使用的重负载系统索引*每个索引的分片数*(副本+ 1)应该不小于然后是数据库托管的服务器数量。

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