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

我必须设置多少个分片和副本才能使用群集中的每个cpu核心(我希望100%的负载,最快的查询结果)?

我想使用Elasticsearch进行聚合。我读到Elasticsearch使用多个cpu核心,但是没有找到关于cpu核心在分片和副本方面的确切细节。

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

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

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

回答:

进行操作(索引,搜索,批量索引等)时,节点上的分片使用一个执行线程,即一个CPU内核。

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

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

以上是 如何在Elasticsearch集群上最大化CPU核心 的全部内容, 来源链接: utcz.com/qa/426291.html

回到顶部