繁体   English   中英

Elasticsearch OutOfMemoryError Java 堆空间

[英]Elasticsearch OutOfMemoryError Java heap space

我正在运行一个 8 核、32g RAM elasticsearch 节点,有 5 个分片,4 亿(小)文档。

一切正常,直到我运行 agg 搜索,然后分片开始失败:

java.lang.OutOfMemoryError: Java heap space

更改了堆大小export ES_HEAP_SIZE=16gES_MAX_MEMES_MIN_MEM也相同)

还更改了 elasticsearch 的yml文件:

bootstrap.mlockall: true

甚至(安装文档推荐):

sudo sysctl -w vm.max_map_count=262144

重启服务还是没影响,还是java.lang.OutOfMemoryError: Java heap space

还有其他建议吗? 除了不运行 agg 查询?

查询是:

https://localhost:9200/my_index_name/_search?search_type=count
{
  "aggs": {
    "distinct_hostname": {
      "cardinality": {
        "field": "hostname"
      }
    }
  }
}

我想我发现了这个错误。 我使用'service'来运行elasticsearch,因此我的环境变量被剥离了。 我必须使用correcct env变量(特别是ES_HEAP_SIZE=16g )更新/etc/default/elasticsearch elasticsearch文件。

到目前为止,它运行良好,应用程序没有错误。

更新Elasticsearch 5的Java堆大小的正确方法不是EXPORT _JAVA_OPTIONSEXPORT ES_HEAP_SIZE或使用命令行参数。 据我所知,所有这些都被Elasticsearch安装目录config/jvm.options的配置文件覆盖。 要更改这些设置,您需要在该文件中编辑这些行:

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms2g
-Xmx2g

虽然这是一个老问题,但以下是如何在较新版本的 ELK(Elasticsearch、Kibana、Logstash)(v 5.0+) 中解决此问题:

配置您的jvm.options文件以在堆上分配更多 memory。
您需要配置的选项是-Xms-Xmx选项,它们默认设置为 1 GB RAM( -Xms1G-Xmx1G )。 建议的大小不超过系统 RAM 的一半。 例如,在具有 32GB RAM 的 PC 上,您可以设置以下内容: -Xms16G-Xmx16G

这个文件可以在大多数 ELK 安装的/etc/elasticsearch/jvm.options中找到。

文档有更详细的信息: https://www.elastic.co/guide/en/elasticsearch/reference/master/advanced-configuration.html#set-jvm-heap-size

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM