簡體   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