tencent cloud

Elasticsearch Service

新手指引
动态与公告
产品动态
产品公告
安全公告
产品简介
产品概述
Elasticsearch 版本支持说明
产品功能
高级特性(X-Pack)
产品优势
应用场景
能力与限制说明
相关概念
购买指南
计费概述
产品定价
ES Serverless 服务定价
欠费说明
ES 内核增强
内核版本发布记录
定向路由优化
压缩算法优化
FST Off Heap 内存优化
快速入门
集群规格和容量配置评估
创建集群
访问集群
ES Serverless 服务指南
服务概述
基本概念
5分钟快速体验
快速使用
访问控制
数据写入
数据查询
索引管理
告警管理
ES API 参考
相关问题
数据应用指南
数据应用概述
数据管理
ES 集群指南
集群管理
访问控制
集群多可用区部署
集群扩缩容
集群配置
插件配置
监控与告警
日志查询
数据备份
升级
实践教程
数据迁移和同步
应用场景构建
索引设置
SQL 支持
企业微信机器人接收 Watcher 告警
API 文档
History
Introduction
API Category
Instance APIs
Making API Requests
Data Types
Error Codes
常见问题
产品相关问题
ES 集群
词汇表
新版介绍
Elasticsearch Service 2020.07新版
Elasticsearch Service 2020.2新版
Elasticsearch Service 2019.12新版

集群负载不均的问题如何解决?

PDF
聚焦模式
字号
最后更新时间: 2021-08-11 11:17:23

问题现象

集群在某些情况下会个别节点 CPU 使用率远高于其他节点的现象,具体表现为 ES 集群控制台节点监控上可以明显看到某些节点 CPU 使用率很高。

问题原因

索引分片设计不合理
Segment 大小不均
存在典型的冷热数据需求场景

原因分析及解决方案

Shard 设置不合理

1. 登录 Kibana 控制台,在开发工具中执行以下命令,查看索引的 shard 信息,确认索引的 shard 在负载高的节点上呈现的数量较多,说明 shard 分配不均。
GET _cat/shards?v
2. 登录 Kibana 控制台,在开发工具中执行以下命令,查看索引信息。结合集群配置,确认存在节点 shard 分配不均的现象。
GET _cat/indices?v
3. 重新分配分片,合理规划 shard,确保主 shard 数与副 shard 数之和是集群数据节点的整数倍。
注意:
Elasticsearch 在检索过程中也会检索 .del 文件,然后过滤标记有 .del 的文档,这会降低检索效率,耗费规格资源,建议在业务低峰期进行强制合并操作,具体请参见 force merge

shard 规划建议

Shard 大小和数量是影响 Elasticsearch 集群稳定性和性能的重要因素之一。Elasticsearch 集群中任何一个索引都需要有一个合理的 shard 规划。合理的 shard 规划能够防止因业务不明确,导致分片庞大消耗 Elasticsearch 本身性能的问题。以下是 shard 规划时的几个建议:
尽量遵循索引单分片20g - 50g的设计原则。
1. 索引尽量增加时间后缀,按时间滚动,方便管理。
2. 在遵循单分片设计原则的前提下,预测出索引最终大小,并根据集群节点数设计索引分片数量,使分片尽量平均分布在各个节点。
注意:
主分片不是越多越好,因为主分片越多,Elasticsearch 性能开销也会越大。建议单节点 shard 总数按照单节点内存×30进行评估,如果 shard 数量太多,极易引起文件句柄耗尽,导致集群故障。

Segment 大小不均

1. 在查询 body 中添加 "profile": true,检查 test 索引是否存在某个 shard 查询时间比其他 shard 长。
2. 查询中分别指定 preference=_primarypreference=_replica,在 body 中添加 "profile": true,分别查看主副 shard 查询消耗的时间。检查较耗时的 shard 主要体现在主 shard 上还是副 shard 上。
3. 登录 Kibana 控制台,在开发工具中执行以下命令,查看 shard,并根据其中 segment 信息分析问题所在,确认负载不均与 segment 大小不均有关。
GET _cat/segments/index?v&h=shard,segment,size,size.momery,ip
GET _cat/shards?v
4. 参考以下两种方法其中一种解决问题:
在业务低峰期进行强制合并操作,具体请参见 force merge,将缓存中的 delete.doc 彻底删除,将小 segment 合并成大 segment。
重启主 shard 所在节点,触发副 shard 升级为主 shard。并且重新生成副 shard,副 shard 复制新的主 shard 中的数据,保持主副 shard 的 segment 一致。

存在典型的冷热数据需求场景

如果查询中添加了 routing 或查询频率较高的热点数据,则必然导致数据出现负载不均。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈