基于CPU利用率的ElasticSearch分片重新分配设置

pbgvytdp  于 2023-03-29  发布在  ElasticSearch
关注(0)|答案(1)|浏览(152)

我们有一个28节点的ElasticSearch集群。虽然每个节点的分片数量几乎相同,但我们经常观察到大约5个节点的CPU利用率/平均负载总是很高,而所有剩余节点的平均负载都很低。
我们怀疑的是,这可能是由于与托管在其他节点上的分片相比,托管在这5个节点上的分片上的搜索/滚动操作相对较高。
是否还有其他原因?是否有基于节点CPU使用率/负载平均值的分片重新分配设置?

55ooxyrt

55ooxyrt1#

1.除了23个节点中的其余节点外,您是否检查了在这些高负载节点上运行的任何其他进程?
1.这些高负载节点上的硬件配置是否与其他节点相似?
Elasticsearch的默认分片分布会将分片均匀分布在所有节点上。这是自动发生的,无需任何特定的用户干预。如果没有发生这种情况,那么集群端一定有一些设置阻止了分片平衡。
您应该查看GET _cluster/settings/中是否存在routing.allocation.includerouting.allocation.exclude设置

{
  "persistent" : {
    "cluster" : {
      "routing" : {
        "allocation" : {
          "include" : {
            "_ip" : "xx.xx.xx.xx"
          },
          "enable" : "all",
          "exclude" : {
            "_host" : "xxxxxxx",
            "_ip" : "xx.xx.xx.xx"
          }
        }
      },
      "max_shards_per_node" : "xxxx"
    },
    "search" : {
      "max_buckets" : "xxxx",
      "max_open_scroll_context" : "xxxx"
    },
    "xpack" : {
      "monitoring" : {
        "collection" : {
          "enabled" : "true"
        }
      }
    }
  },
  "transient" : { }
}

如果是,则应根据您的要求配置排除或包含。
此外,您应该检查群集设置,以确定是否添加了任何与位置调整相关的配置。
您可以查看更多详情here
更新:
也有可能在这些节点上托管的分片上有更高的搜索/滚动操作量。为了确认这一点,您可以使用Elasticsearch的节点统计API来获取有关集群中每个节点的CPU使用率,索引和搜索操作的详细信息。例如:

curl -XGET 'http://localhost:9200/_nodes/node_name/stats?pretty'

相关问题