elasticsearch - 如何知道 ElasticSearch 分片使用的堆数量?

标签 elasticsearch

我有一个集群,其中暖节点中的几个索引不包含任何文档。由于它们是只读的,它们无法获取更多文档,所以我想知道删除它们是否会对我的 ElasticSearch 节点的堆使用有任何好处。

我尝试使用 /_cat/shards为了获得所述索引的每个分片的一些堆信息,但我找不到它,我尝试查看以下指标的值,但即使对于 20GiB 分片,这些值也很小,我认为我正在查看错误的指标(括号中是 33GiB 分片的示例值):

  • fm: fielddata.memory_size (0b)
  • qcm: query_cache.memory_size (0b)
  • sm: segments.memory (44.6mb)
  • siwm: segments.index_writer_memory (0b)
  • svmm: segments.version_map_memory (0b)
  • sfbm: segments.fixed_bitset_memory (0b)

  • 所以我的问题是:
  • 有没有办法知道每个分片有多少主机内存?
  • 一个空的分片会消耗任何堆吗?

  • (底线是我的暖节点堆很高,所以我正在考虑删除这些空索引的所有分片,但前提是它有任何好处。)

    谢谢。

    最佳答案

    因此,在通过评论部分收集了一些信息之后,这是我的两分钱:
    首先,我不知道有一个 API 可以让您检查每个分片的堆内存。也许 xpack 监控和/或 elasticsearch metricbeat 模块可以为您做到这一点。
    但是,既然你问:

    ... As they are read-only, they can't get any more documents, so I want to know if removing them will do any good to the heap usage of my ElasticSearch nodes.


    Elasticsearch 建立在 Lucene 之上。 Lucene 索引由一个或多个不可变索引段组成,本质上是一个“迷你索引”。 Elasticsearch 尝试将频繁请求的段(索引和搜索请求)保留在堆内存中,以便以快速的方式服务这些请求。如果没有更多的段可以加载到堆中(因为堆大小已达到其限制),则段将刷新到磁盘,而其他段则从磁盘加载到堆中。这是一个持续的过程(看看这个 blog post 以供引用)。
    正如您所说,您认为“有问题”的索引是只读的(意味着不能执行索引请求)并且也不包含文档(意味着不会针对特定段执行搜索请求)。
    总结一下:无论如何,“有问题的”索引很可能不在堆中。
    然而,这些索引仍然需要一些磁盘空间,因为它们“存在”。此外,elasticsearch 必须管理它们的分片,并且必须(重新)将它们分配给节点,例如在分片恢复的情况下。

    Q: So why are you hesitant to do (deleting the empty indices) it?

    A: ... I need to modify my maintenance application's code...


    随着 Elasticsearch 6.6 版的发布,index lifecycle management (ilm) .它的目的是通过定义策略来自动化索引的管理/维护。这些策略包含所谓的阶段(热、暖、冷、删除)和相应的操作(翻转、只读、卡住、收缩、删除……)。它们也可以通过 Kibana 进行设置和修改。
    您可能想看看 ilm 并用它替换您的应用程序(无意冒犯,只是提示)。
    我希望我能帮助你!

    关于elasticsearch - 如何知道 ElasticSearch 分片使用的堆数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59548360/

    相关文章:

    java - 一个程序中有多个Elasticsearch连接

    python - Elasticsearch delete_by_query错误用法

    elasticsearch - 如何优化ElasticSearch多个查询

    Elasticsearch 首先返回精确匹配,然后返回其他匹配

    elasticsearch - 如何使用ES的Java Rest High Client在Elasticsearch上调用FlushRequest?

    elasticsearch - Elasticsearch-匹配嵌套对象数组中的所有子项

    elasticsearch - geopoint kibana elasticsearch没有出现在tilemap上

    java - 在 ElasticSearch 中存储 News Feed 的最佳设计模式

    elasticsearch - 按日期排序+在即将出现的结果之后显示过去的结果

    docker - 如何执行 chown 1000 :1000 on the elasticsearch data directory in Kubernetes