我们有一个28节点的ElasticSearch集群。虽然每个节点的分片数量几乎相同,但我们经常观察到大约5个节点的CPU利用率/平均负载总是很高,而所有剩余节点的平均负载都很低。我们怀疑的是,这可能是由于与托管在其他节点上的分片相比,托管在这5个节点上的分片上的搜索/滚动操作相对较高。是否还有其他原因?是否有基于节点CPU使用率/负载平均值的分片重新分配设置?
55ooxyrt1#
1.除了23个节点中的其余节点外,您是否检查了在这些高负载节点上运行的任何其他进程?1.这些高负载节点上的硬件配置是否与其他节点相似?Elasticsearch的默认分片分布会将分片均匀分布在所有节点上。这是自动发生的,无需任何特定的用户干预。如果没有发生这种情况,那么集群端一定有一些设置阻止了分片平衡。您应该查看GET _cluster/settings/中是否存在routing.allocation.include和routing.allocation.exclude设置
GET _cluster/settings/
routing.allocation.include
routing.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'
1条答案
按热度按时间55ooxyrt1#
1.除了23个节点中的其余节点外,您是否检查了在这些高负载节点上运行的任何其他进程?
1.这些高负载节点上的硬件配置是否与其他节点相似?
Elasticsearch的默认分片分布会将分片均匀分布在所有节点上。这是自动发生的,无需任何特定的用户干预。如果没有发生这种情况,那么集群端一定有一些设置阻止了分片平衡。
您应该查看
GET _cluster/settings/
中是否存在routing.allocation.include
和routing.allocation.exclude
设置如果是,则应根据您的要求配置排除或包含。
此外,您应该检查群集设置,以确定是否添加了任何与位置调整相关的配置。
您可以查看更多详情here
更新:
也有可能在这些节点上托管的分片上有更高的搜索/滚动操作量。为了确认这一点,您可以使用Elasticsearch的节点统计API来获取有关集群中每个节点的CPU使用率,索引和搜索操作的详细信息。例如: