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新版
文档Elasticsearch Service快速入门集群规格和容量配置评估

集群规格和容量配置评估

PDF
聚焦模式
字号
最后更新时间: 2021-10-26 16:42:13
腾讯云 Elasticsearch Service(ES)是分布式多节点形式的集群,每个节点均是有计算和存储两部分构成,如何根据业务的需求,选择合适的配置,我们根据实际运营经验,在此提供一些 ES 常见使用场景下,配置选择的建议。您可以根据业务需要进行参考,当然,最好的方法还是需要您在业务的实际使用过程中逐步去探索。依托腾讯云 ES 提供的弹性伸缩机制,在业务规模增大,性能遇到瓶颈的时候,您可以随时扩容,调整得到合适的集群规格。

存储容量评估

影响腾讯云 ES 服务存储容量的主要因素如下:
副本数量:副本有利于增加数据的可靠性,但同时会增加存储成本。默认和建议的副本数量为1,对于部分可以承受异常情况导致数据丢失的场景,可考虑设置副本数量为0。
数据膨胀:除原始数据外,ES 需要存储索引、列存数据等,在应用编码压缩等技术后,一般膨胀10%。
内部任务开销:ES 占用约20%的磁盘空间,用于 segment 合并、ES Translog、日志等。
操作系统预留:Linux 操作系统默认为 root 用户预留5%的磁盘空间,用于关键流程处理、系统恢复、防止磁盘碎片化问题等。
因此,数据在 ES 中占用的实际空间可通过下面公式估算:
实际空间 = 源数据 × (1 + 副本数量) × (1 + 数据膨胀) / (1 - 内部任务开销) / (1 - 操作系统预留)
≈ 源数据 × (1 + 副本数量) × 1.45
为保证服务的稳定运行,建议至少预留15%的存储空间,因此建议申请的存储容量为:
存储容量 = 源数据 × (1 + 副本数量) × 1.45 × (1 + 预留空间)
≈ 源数据 × (1 + 副本数量) × 1.67
对于内存与存储容量的关系,我们有如下经验比例,一般而言,为保证集群运行的性能和稳定,不建议磁盘存储超过这个比例限制。
对于热数据,我们推荐内存与磁盘的比例为:1:96。
对于冷数据,我们推荐内存与磁盘的比例为:1:480。
注意:
ES 广泛应用于日志、站点检索、Metrics、APM 等场景,上述存储容量评估方法较为泛化,您可以根据自身需求高度优化 ES,降低存储成本。

计算资源评估

ES 的计算资源主要消耗在写入和查询过程,而不同业务场景在写入和查询方面的复杂度不同、比重不同,导致计算资源相比存储资源较难评估。但一般情况下,存储资源会较早成为瓶颈,因此建议您优先评估存储资源量,然后 初步选择计算资源,在测试过程中确认计算资源是否足够。
下面针对几种常见使用场景,介绍计算资源评估过程中的一些经验:
日志场景:日志属于典型的写多读少类场景,计算资源主要消耗在写入过程中。我们在日志场景的经验是:2核8GB内存的资源最大可支持0.5万次写入/s的写入能力,但注意不同业务场景可能有偏差。由于实例性能基本随计算资源总量呈线性扩容,您可以按实例资源总量估算写入能力。例如8核32GB内存的资源可支持2万次写入/s的写入能力。
Metric 及 APM 等结构化数据场景:这也是写多读少类场景,但相比日志场景计算资源消耗较小,2核8GB内存的资源一般可支持1万次写入/s的写入能力,您可参照日志场景线性扩展的方式,评估不同规格实例的实际写入能力。
站内搜索及应用搜索等搜索场景:此类为读多写少类场景,计算资源主要消耗在查询过程,由于查询复杂度在不同使用场景差别非常大,计算资源也最难评估,建议您结合存储资源初步选择计算资源,然后在测试过程中验证、调整。

实例类型选择及测试

在完成存储、计算资源评估后,您可以初步选择实例类型,这里包含节点规格和节点数量两方面。选择实例类型的常用建议如下:
建议您至少选择3个节点,避免 ES 实例出现脑裂问题,保证 ES 实例具有较高的节点故障容错能力。
说明:
脑裂:两个节点同时认为自己是唯一处于活动状态的服务器,从而出现争用资源的情况。
若您有非常大的存储容量需求,建议选择高规格的节点,避免大量低规格节点,这对大实例的性能、稳定性等有较大好处。例如,若您有40核160GB内存5TB存储容量需求,建议选择8核32GB内存1TB × 5节点的实例。同理,当您需要对实例扩容时,建议优先进行纵向扩容,把节点扩容到8核32GB或16核64GB的规格,然后再考虑横向扩容增加节点个数。
当完成实例类型的初步选择后,您可以使用真实数据进行测试,通过观察 CPU 使用率、写入指标(性能、拒绝率)、查询指标(QPS、拒绝率)等监控信息,进一步确认实例类型是否合适。另外,建议针对上述监控信息配置告警,方便在线上使用时,及时发现资源不足等问题。

分片数量评估

每个 ES 索引被分为多个分片,数据按哈希算法打散到不同的分片中。由于索引分片的数量影响读写性能、故障恢复速度,且通常无法轻松更改,需要提前考虑。这里给出配置分片数量的一些常用建议:
建议单个分片大小保持在10GB - 50GB之间,您可以据此初步确定 Index 的分片数量。分片不宜过大或过小:过大可能使 ES 的故障恢复速度变慢;过小可能导致非常多的分片,但因为每个分片使用一些数量的 CPU 和内存,从而导致读写性能、内存不足等问题。
在测试阶段,可以根据每个 Index 的实际大小、预期未来增长情况,适当调整分片数量。
当分片数量超过数据节点数量时,建议分片数量接近数据节点的整数倍,方便分片在所有数据节点均匀分布。
对于日志、Metric 等场景中,建议使用 ES 自带的 Rollover Index 功能,持续滚动产生新的 Index。方便在发现分片大小不合理时,通过该功能及时调整分片数量。
例如,假设实例有5个数据节点,Index 当前大小为150GB,预期半年后增长50%。如果我们控制每个单分片为30GB,则大约需要150GB ×(1 + 50%)/ 30 ≈ 7个分片,考虑到有两个数据节点支撑2/7的数据压力,节点间压力相对不均匀,我们把分片数量调整到10个。

帮助和支持

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

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

文档反馈