2014-11-25 230 views
8

在試圖增加JVM堆大小Elasticsearch在Windows中,我定義以下環境變量之後報告默認堆存儲器大小RAM)。Elasticsearch設置環境變量

我已重新啓動ES並使用_nodes/stat HTTP GET命令查詢其內存使用情況。然而,似乎它仍然使用1GB:

MEM:{

heap_used_in_bytes: 1032367576, 
heap_used_percent: 99, 
heap_committed_in_bytes: 1037959168, 
heap_max_in_bytes: 1037959168, 
... 

重啓後應該不會ES調整它的堆內存的大小?

回答

6

在我卸載並重新安裝Elasticsearch Windows服務後,它正確地增加了JVM堆大小。只需重新啓動它而不重新安裝服務不起作用。

+0

這工作! 我正在使用Windows Server 2012,並且遇到了同樣的問題(儘管我使用了ES_MIN_MEM和ES_MAX_MEM環境變量 - 然後我添加了ES_HEAP_SIZE以獲得較好的效果)。我嘗試重新啓動(在新的Administrator Powershell窗口中,選擇env更改)無濟於事。使用{ES_HOME} \ bin \ service.bat stop/remove/install/start(以管理員身份)成功更改了內存分配。它必須在安裝過程中而不是在運行時選取環境變量。感謝您發佈您自己的答案! – 2015-01-14 16:10:13

+0

謝謝。我已經嘗試了很多其他的東西,這個工作! – 2016-11-03 18:15:37

0

彈性搜索做1.5

一種方法是編輯/bin/elasticsearch.in.sh文件默認爲是1g的一些其他的價值。對於您的示例,請將ES_MAX_MEM=1g更改爲ES_MAX_MEM=6g。編輯完成後,重新啓動Elastic Search,你應該很好。

#!/bin/sh 

ES_CLASSPATH=$ES_CLASSPATH:$ES_HOME/lib/elasticsearch-1.5.0.jar:$ES_HOME/lib/*:$ES_HOME/lib/sigar/* 

if [ "x$ES_MIN_MEM" = "x" ]; then 
    ES_MIN_MEM=256m 
fi 
if [ "x$ES_MAX_MEM" = "x" ]; then 
    ES_MAX_MEM=6g 
fi 
if [ "x$ES_HEAP_SIZE" != "x" ]; then 
    ES_MIN_MEM=$ES_HEAP_SIZE 
    ES_MAX_MEM=$ES_HEAP_SIZE 
fi 
+0

@jasonrhasss我在/bin/elasticsearch.in.sh中進行了修改,但它並不彈性,仍然只使用1g – RamRajVasavi 2015-05-25 06:07:32

+0

@RamRajVasavi是否通過yum或apt-get安裝?它可能使用不同的啓動腳本。另外 - 你使用1.5版嗎? – jasonrhaas 2015-05-26 00:13:19

10

從Notes上running ES as a service on windows

注意,在安裝過程中使用環境配置選項被複制,並且將服務生命週期期間使用。這意味着安裝後對它們所做的任何更改都不會被取回,除非該服務被重新安裝。

如果您不想卸載並重新安裝,您可以使用服務管理器進行更改。運行>service manager

然後選擇 'Java' 作爲標籤

Java Tab

更改內存池的設置,點擊 '應用',然後重新啓動該服務。

enter image description here

+0

這是否覆蓋任何以前配置的環境變量? – bradvido 2015-07-08 13:19:23

+1

是的,最初配置的環境變量用於初始配置服務。通過在這裏進行更改,這將覆蓋任何環境變量。 – Akshay 2015-07-08 16:23:58

0

爲了避免服務重新安裝就可以直接更改註冊表值。他們是有點棘手找到:

enter image description here

當然,你必須改變這些設置後重新啓動該服務。