【问题标题】:Elastic search high memory consumption弹性搜索高内存消耗
【发布时间】:2019-02-24 12:51:31
【问题描述】:

弹性搜索占用超过 25 GB 的 RAM。我为弹性搜索提供的索引数据约为 1 GB。为什么弹性搜索需要这么大的空间?

【问题讨论】:

    标签: elasticsearch memory ram elasticsearch-5


    【解决方案1】:

    每当弹性搜索以默认设置启动时,它会消耗大约 1 GB RAM,因为它们的堆空间分配默认为 1 GB 设置。

    确保检查“jvm.options”文件

    对于 Ubuntu Linux 操作系统:- {如果使用 debian 文件安装} 文件位置:- /etc/elasticsearch/

    对于 Windows 操作系统:- 文件位置是提取的文件夹位置 {extacted_folder_path/config/jvm.options}

    在 jvm.options 文件中你需要配置 JVM Heap 的一些设置

    -Xms1g

    -Xmx1g

    -Xms1g 设置为在弹性搜索开始时获取 1 GB 的初始 RAM 大小。 -Xmx1g 定义了 Elastic Search JVM Heap 的最大 RAM 分配。

    您需要将这两个参数调整为 4 GB 或任何适合您的需要。

    -Xms4g

    -Xmx4g

    注意:- 不要设置超过 32 GB 的 Java 堆空间,这不会带来任何好处。

    【解决方案2】:

    出于某种原因,“elasticsearch”默认使用了我 24G 内存的 53%,如果你问我,这太疯狂了。可能是因为它是自动配置的,如下文所述。无论如何,要设置自定义 JVM 堆大小,应该在jvm.options.d 目录中创建一个文件“jvm.options”,并按照默认“jvm.options”文件中的说明添加自定义值:

    ################################################################
    ## IMPORTANT: JVM heap size
    ################################################################
    ##
    ## The heap size is automatically configured by Elasticsearch
    ## based on the available memory in your system and the roles
    ## each node is configured to fulfill. If specifying heap is
    ## required, it should be done through a file in jvm.options.d,
    ## and the min and max should be set to the same value. For
    ## example, to set the heap to 4 GB, create a new file in the
    ## jvm.options.d directory containing these lines:
    ##
    ## -Xms4g
    ## -Xmx4g
    ##
    ## See https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html
    ## for more information
    ##
    ################################################################
    

    我已将内存使用设置为 1G,所以文件如下所示:

    -Xms1g
    -Xmx1g
    

    然后你应该重新启动“elasticsearch”服务,你可以通过以下方式检查内存使用情况:
    sudo service elasticsearch status

    Elasticsearch 和 jvm 版本:
    版本:7.11.0,构建:default/deb/8ced7813d6f16d2ef30792e2fcde3e755795ee04/2021-02-08T22:44:01.320463Z,JVM:15.0.1

    【讨论】:

    • 谢谢兄弟!除了我使用自定义文件的文件名:“heap_size”而不是“jvm.options”之外,我尝试了以上所有方法,这不起作用。然后我将文件名重命名为“jvm.options”并重新启动 ES 一切正常。
    • 没问题。我很高兴这有帮助。
    • 出于某种原因,他们没有告诉您文件需要以“.options”结尾。我的被​​命名为“heap.options”并且也可以工作。
    猜你喜欢
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 2023-01-16
    • 2012-11-13
    • 1970-01-01
    • 2021-01-10
    • 2014-08-17
    相关资源
    最近更新 更多