集群在某些情况下会个别节点 CPU 使用率远高于其他节点的现象,具体表现为 ES 集群控制台节点监控上可以明显看到某些节点 CPU 使用率很高。
GET _cat/shards?v
GET _cat/indices?v
注意:Elasticsearch 在检索过程中也会检索
.del
文件,然后过滤标记有.del
的文档,这会降低检索效率,耗费规格资源,建议在业务低峰期进行强制合并操作,具体请参见 force merge。
Shard 大小和数量是影响 Elasticsearch 集群稳定性和性能的重要因素之一。Elasticsearch 集群中任何一个索引都需要有一个合理的 shard 规划。合理的 shard 规划能够防止因业务不明确,导致分片庞大消耗 Elasticsearch 本身性能的问题。以下是 shard 规划时的几个建议:
注意:主分片不是越多越好,因为主分片越多,Elasticsearch 性能开销也会越大。建议单节点 shard 总数按照单节点内存×30进行评估,如果 shard 数量太多,极易引起文件句柄耗尽,导致集群故障。
"profile": true
,检查 test 索引是否存在某个 shard 查询时间比其他 shard 长。preference=_primary
和 preference=_replica
,在 body 中添加 "profile": true
,分别查看主副 shard 查询消耗的时间。检查较耗时的 shard 主要体现在主 shard 上还是副 shard 上。GET _cat/segments/index?v&h=shard,segment,size,size.momery,ip
GET _cat/shards?v
如果查询中添加了 routing 或查询频率较高的热点数据,则必然导致数据出现负载不均。
本页内容是否解决了您的问题?