Elasticsearch资源分配

一、内存

64 GB 内存的机器是非常理想的, 但是32 GB 和16 GB 机器也是很常见的。少于8 GB 会适得其反(你最终需要很多很多的小机器),大于64 GB 的机器也会有问题,

Elasticsearch 分为两部分,一部分是本身的堆内存,另一部分是lucene使用非堆内存,标准的建议是把 50% 的可用内存作为 Elasticsearch 的堆内存,保留剩下的 50%留给lucene;如果不需要对分词字符串做聚合计算(例如,不需要 fielddata )可以考虑降低堆内存。堆内存越小,Elasticsearch(更快的 GC)和 Lucene(更多的内存用于缓存)的性能越好。

由于JVM 在内存小于 32 GB 的时候会采用一个内存对象指针压缩技术,所以分配给 Elasticsearch的内存不要超过 临界值**~32GB** ,设置堆内存为 31GB 是一个安全的选择。

二、存储分配

尽可能使用SSD, 基于 SSD 的节点,查询和索引性能都有提升。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

三、分片数量评估

每个 ES 索引被分为多个分片,数据按哈希算法打散到不同的分片中。由于索引分片的数量影响读写性能、故障恢复速度,且通常无法轻松更改,需要提前考虑。这里给出配置分片数量的一些常用建议:

建议单个分片大小保持在10GB - 50GB之间,您可以据此初步确定 Index 的分片数量。分片不宜过大或过小:过大可能使 ES 的故障恢复速度变慢;过小可能导致非常多的分片,但因为每个分片使用一些数量的 CPU 和内存,从而导致读写性能、内存不足等问题。

当分片数量超过数据节点数量时,建议分片数量接近数据节点的整数倍,方便分片在所有数据节点均匀分布。

参考:

https://www.elastic.co/guide/cn/elasticsearch/guide/current/hardware.htmlhttps://www.elastic.co/guide/cn/elasticsearch/guide/current/hardware.html

https://cloud.tencent.com/document/product/845/19551https://cloud.tencent.com/document/product/845/19551

相关推荐
weixin_460443562 小时前
2026年新修订《网络安全法》实施:Java私有化考试系统如何做好SBOM、漏洞治理与安全升级?
java·开发语言·在线考试系统·企业培训考试系统·宏远培训考试系统·国企培训考试系统·国产化培训系统
海鸥-w5 小时前
什么是AOP
java
Cc.Y5 小时前
Java零基础入门:可变字符串与包装类:StringBuilder、StringBuffer 与 通讯录管理系统实战
java·开发语言·python
paopaokaka_luck5 小时前
基于springboot+vue的智慧家政管理系统(AI问答、 WebSocket实时沟通、ECharts运营分析、订单规则与服务追踪)
java·javascript·spring boot·数据分析·echarts·mybatis
Leo.yuan6 小时前
2026年实时数据同步工具怎么选?GoldenGate、Striim、SeaTunnel、FineDataLink 5.0横评
大数据
sm_926787056 小时前
RFID 标签打印的技术实现要点与二次开发实践
java·大数据·前端·c++·编辑器
阿森_dev6 小时前
2027 届毕设选题怎么选:30 个 Java 方向选题的实现难度排序
java·开发语言·spring boot·毕业设计·课程设计
龙亘川6 小时前
AI 协同赋能城市治理:支撑政协数字化履职的技术路径探析
大数据·人工智能·智慧城市·开源软件·数据可视化
Sarvartha6 小时前
Lambda 表达式和函数式接口
java·开发语言
计算机毕业设计杰瑞6 小时前
【计算机毕设精品】基于SpringBoot的一体化教务与学业质量管理系统的设计与实现,附源码_增删改查_java项目_可完美运行部署_网站项目
java·spring boot·课程设计