如何在Elasticsearch集群上最大化CPU核心

时间:2015-11-09 14:26:20

标签: elasticsearch

我需要设置多少个分片和副本才能在群集中使用每个cpu核心(我想要100%加载,最快的查询结果)?

我想将Elasticsearch用于聚合。我读到Elasticsearch使用多个cpu内核,但没有找到关于分片和副本的cpu内核的确切细节。

我的观察是,单个分片在查询时不使用超过1个核心/线程(考虑到一次只有一个查询)。对于副本,1-shard索引的查询速度不快,因为Elasticsearch似乎不使用其他节点在分片上分配负载。

我的问题(一次一个查询):

  • 分片不使用多个cpu核心?
  • 必须始终完全扫描碎片,复制品不能用于划分节点之间的碎片内负载吗?
  • 最佳性能的公式是SUM(每个节点的CPU_CORES)* PRIMARY_SHARDS?

1 个答案:

答案 0 :(得分:8)

在进行操作(索引,搜索,批量索引等)时,节点上的分片使用一个执行线程,这意味着一个CPU核心。

如果在给定时刻运行一个查询,则每个分片将使用一个CPU核心。例如,具有单个索引且具有6个主分片和一个副本的三节点群集将在每个节点上总共有12个分片,4个分片。

如果群集上只运行一个查询,对于该索引,ES将查询索引的所有6个分片(无论它们是原色还是副本),每个节点将使用0到4个CPU内核这项工作,因为ES用来选择分片的哪个副本执行搜索的循环算法可以在一个节点上选择没有分片,或者在一个节点上选择最多4个分片。