elasticsearch,jvm,heap,Memory,elasticsearch,Jvm,Heap" /> elasticsearch,jvm,heap,Memory,elasticsearch,Jvm,Heap" />

Memory Elasticsearch在设置环境变量后报告默认堆内存大小

Memory Elasticsearch在设置环境变量后报告默认堆内存大小,memory,elasticsearch,jvm,heap,Memory,elasticsearch,Jvm,Heap,为了在Windows框上增加Elasticsearch的JVM堆大小,我定义了以下环境变量: ES_堆大小=6g (本机共有12克闸板) 我已重新启动ES,并使用_nodes/stat HTTP GET命令查询其内存使用情况。但是,它似乎仍在使用1GB: 成员:{ heap_used_in_bytes: 1032367576, heap_used_percent: 99, heap_committed_in_bytes: 1037959168, heap_max_in_bytes: 103795

为了在Windows框上增加Elasticsearch的JVM堆大小,我定义了以下环境变量:

ES_堆大小=6g

(本机共有12克闸板)

我已重新启动ES,并使用_nodes/stat HTTP GET命令查询其内存使用情况。但是,它似乎仍在使用1GB:

成员:{

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

ES是否应该在重新启动后调整其堆内存大小?

在我卸载并重新安装Elasticsearch Windows服务后,它正确地增加了JVM堆大小。仅重新启动它而不重新安装服务是不起作用的。

对于Elastic Search 1.5

一种方法是编辑
/bin/elasticsearch.in.sh
文件,将其默认为1g的其他值。例如,将
ES\u MAX\u MEM=1g
更改为
ES\u MAX\u 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
从以下注释中:

请注意,安装过程中可用的环境配置选项将被复制,并将在服务生命周期中使用。这意味着除非重新安装服务,否则在安装后对其所做的任何更改都不会被拾取

如果不想卸载和重新安装,可以使用service manager进行更改。运行
>service manager

然后选择“Java”选项卡

更改内存池设置,点击“应用”并重新启动服务


为了避免重新安装服务,您可以直接更改注册表中的值。要找到这些值有点困难:


当然,您必须在更改这些设置后重新启动服务。

这起作用了!我使用的是Windows Server 2012,我也遇到了同样的问题(虽然我使用的是ES_MIN_MEM和ES_MAX_MEM环境变量-然后我添加了ES_HEAP_SIZE作为衡量标准)。我尝试重新启动(在新的管理员Powershell窗口中,拾取环境更改)无效。使用{ES_HOME}\bin\service.bat停止/删除/安装/启动(作为管理员)已成功更改内存分配。它必须在安装过程中而不是在运行时拾取环境变量。感谢您发布自己的答案!@jasonrhass我在/bin/elasticsearch.in.sh中进行了修改,但在elastic中没有效果,仍然使用1gonly@RamRajVasavi您是通过yum还是apt-get安装的?可能是使用不同的启动脚本。另外-您是否使用版本1.5?这会覆盖任何以前配置的环境变量吗?是的,最初配置的环境变量用于最初配置服务。通过在此处进行更改,这将覆盖任何环境变量。