2014-11-25 220 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

当然,你必须改变这些设置后重新启动该服务。