Elastic 搜索空索引的开销是多少?
Posted
技术标签:
【中文标题】Elastic 搜索空索引的开销是多少?【英文标题】:How much is the overhead of an Elastic search empty index? 【发布时间】:2017-03-24 12:41:49 【问题描述】:我有一个只有一个节点的集群。机器有 8 GB 内存,ES 进程分配有 6 GB 内存。我在该节点上总共运行了 531 个分片(522 个索引)。大多数分片几乎不包含数据。
以下是统计数据:
文档总数:265743
已删除文档:27069
总大小:136923957 字节 (130.5 MB)
字段数据:250632 字节
filter_cache:9984 字节
segments: (total:82 memory_in_bytes: 3479988)
已提交的堆为 5.9 GB,使用的为 5.6 GB。
如果我在集群中创建更多索引,则节点统计数据会执行 GC 并最终进入 OOM。我知道这个配置有很多错误(只有一个节点,8 GB 中给出了 6 GB)。
我想知道内存是如何用完的。总文档、过滤器缓存、字段数据加起来几乎为零,但我仍然在用完所有内存。
【问题讨论】:
jmap -histo:live PID 是获取堆摘要的正确工具,如果您不知道是什么占用了您的内存。 【参考方案1】:根据我个人使用 ES 1.x 和 2.x 的经验,每个分片的开销并非微不足道,通常在几 MB/分片的范围内。据我了解,这是为索引缓冲区、状态元数据、对 lucene 对象的引用、缓存对象等保留的内存。
基本上保留了一点内存,以便能够快速索引并在需要时开始缓存。我不知道这在 5.x 版本中还有多少是正确的。
【讨论】:
以上是关于Elastic 搜索空索引的开销是多少?的主要内容,如果未能解决你的问题,请参考以下文章