美文网首页
Elasticsearch内存

Elasticsearch内存

作者: Ombres | 来源:发表于2019-07-15 20:34 被阅读0次

核心概念

  1. 基于Lucene
  2. Java应用

内存使用分析

Lucene的内存消耗

  1. 倒排索引。(堆内存)
    Lucene中,索引是存储在磁盘中,一个索引(Index)由多个段(Segment)组成。当启动IndexSearcher时,会把倒排索引加载到内存中,基于不同的数据类型生成不同的词典,比如text生成FST结构的词典,数值类型生成Bkd tree。
  2. Doc Values(操作系统缓存)
    当Doc Values占用的内存小于可用内存时,会加载到内存中,否则会放到page cache中。

Elasticsearch内存

  1. 基本的元数据(堆内存)
    包括node的元数据和Cluster的元数据,还有内部的一些其他服务,比如线程池,线程队列等等。

  2. field data cache(堆内存)
    用于对分词字段进行排序或聚合。使用过程中会将所有字段的值加载到内存中,而且构建缓存的代价很高。在正常使用的过程中,不建议使用这个字段进行聚合或者排序,错误的使用很容易造成OOM。
    请注意,默认的_id这个字段就是text,对他进行排序时会使用fielddata cache

  3. Node Query Cache(堆内存)
    每个节点的查询缓存,以段为基本单元,详情查看我的另外一篇文章

  4. Shard Request Cache(堆内存)
    Shard级别的缓存。主要用于缓存size=0的请求,aggs和suggestions,还有就是hits.total。

  5. Indexing Buffer(堆内存)
    用于缓存新索引的数据,当空间填满之后,会将数据写到磁盘上成为一个新的段。

  6. 聚合操作(堆内存)
    聚合会根据需求构建不同的bucket,对单个字段进行聚合可能产生固定数量的bucket,但是某些场景下,比如深层嵌套聚合,或者单个字段不同值过多,都有可能导致生成大量的bucket而OOM。具体可参考

相关文章

  • ElasticSearchx

    ElasticSearch 笔记修改ES内存的占用:/etc/elasticsearch/jvm.options ...

  • Elasticsearch内存

    核心概念 基于Lucene Java应用 内存使用分析 Lucene的内存消耗 倒排索引。(堆内存)Lucene中...

  • ElasticSearch

    1. ElasticSearch的介绍 ElasticSearch的简称是ES. ES是内存数据库的一种,其核心的...

  • 吃透Elasticsearch堆内存

    吃透Elasticsearch堆内存 1.什么是堆内存? Java 中的堆是 JVM 所管理的最大的一块内存空间,...

  • elasticsearch 性能调优(三)

    1、内存优化 在bin/elasticsearch.in.sh中进行配置 修改配置项为尽量大的内存: ES_MIN...

  • Elasticsearch聚合限制内存使用

    Elasticsearch聚合限制内存使用 限制内存使用 通常为了让聚合(或者任何需要访问字段值的请求)能够快点,...

  • ElasticSearch优化系列二

    ElasticSearch优化系列二:机器设置(内存) 预留一半内存给Lucence使用 一个常见的问题是配置堆太...

  • elasticsearch集群优化原则

    1.选择堆大小(Choosing a Heap Size) 堆内存:大小和交换编辑 Elasticsearch 默...

  • Linux 中分析超大 JVM dump 文件

    1. 场景 在使用Elasticsearch时,碰到内存溢出的情况,因为配置了-XX:+HeapDumpOnOut...

  • 2018-10-28

    阿里云Elasticsearch 智能化运维实践 lubuntu Netty堆外内存泄露排查盛宴 In A Par...

网友评论

      本文标题:Elasticsearch内存

      本文链接:https://www.haomeiwen.com/subject/cspokctx.html