我有一个默认配置为Elasticsearch的Apache服务器,一切都运行正常,但默认配置的最大大小为1GB。
我没有在Elasticsearch中存储如此大量的文档,所以我想减少内存。
我已经看到我必须更改Java配置中的-Xmx
参数,但我不知道如何。
我看到我可以执行此操作:
bin/ElasticSearch -Xmx=2G -Xms=2G
但是当我必须重新启动Elasticsearch时,这将会丢失。
当Elasticsearch作为服务安装时,是否可以更改最大内存使用量?
答案 0 :(得分:116)
2016年11月24日更新:Elasticsearch 5显然已经改变了配置JVM的方式。 See this answer here。以下答案仍适用于版本< 5.
tirdadc,谢谢你在下面的评论中指出这一点。
我有一个粘贴页面,当我想知道内存和ES时,我与他人分享。这对我来说很合适:http://pastebin.com/mNUGQCLY。我也会在这里粘贴内容:
参考文献:
https://github.com/grigorescu/Brownian/wiki/ElasticSearch-Configuration http://www.elasticsearch.org/guide/reference/setup/installation/
编辑以下文件以修改内存和文件编号限制。这些指令假定Ubuntu 10.04可能适用于更高版本和其他发行版/操作系统。 (编辑:这也适用于Ubuntu 14.04。)
<强> /etc/security/limits.conf文件强>:
elasticsearch - nofile 65535
elasticsearch - memlock unlimited
/ etc / default / elasticsearch(在CentOS / RH上:/ etc / sysconfig / elasticsearch):
ES_HEAP_SIZE=512m
MAX_OPEN_FILES=65535
MAX_LOCKED_MEMORY=unlimited
<强> /etc/elasticsearch/elasticsearch.yml 强>:
bootstrap.mlockall: true
答案 1 :(得分:115)
在 ElasticSearch&gt; = 5 中,文档有changed,这意味着上述答案都不适合我。
我尝试更改ES_HEAP_SIZE
和/etc/default/elasticsearch
中的etc/init.d/elasticsearch
,但当我运行ps aux | grep elasticsearch
时,输出仍显示:
/usr/bin/java -Xms2g -Xmx2g # aka 2G min and max ram
我必须进行以下更改:
/etc/elasticsearch/jvm.options
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms1g
-Xmx1g
# the settings shipped with ES 5 were: -Xms2g
# the settings shipped with ES 5 were: -Xmx2g
答案 2 :(得分:25)
对于想要在Centos 7或运行SystemD的其他系统上执行此操作的任何人,您可以在
中进行更改# Heap Size (defaults to 256m min, 1g max)
ES_HEAP_SIZE=16g
取消注释ES_HEAP_SIZE行,并设置一个值,例如:
{{1}}
(忽略关于1g max的评论 - 这是默认值)
答案 3 :(得分:9)
以前的答案在我的情况下是不够的,可能是因为我在Debian 8上,而他们被引用到之前的发行版。
在 Debian 8 上修改通常放在/usr/lib/systemd/system/elasticsearch.service
中的服务脚本,然后添加Environment=ES_HEAP_SIZE=8G
就在其他“环境= *”行的下方。
现在使用systemctl daemon-reload
重新加载服务脚本并重新启动该服务。应该完成这项工作!
答案 4 :(得分:9)
sudo vim /etc/init.d/elasticsearch
的说明:
ES_HEAP_SIZE=512m
集
sudo vim /etc/elasticsearch/elasticsearch.yml
然后在:
bootstrap.memory_lock: true
集:
<ol>
<form action="finished.php" method="post">
<li><input type="text" name="data['color3']"></li>
<li><input type="text" name="data['color4']"></li>
</form>
</ol>
文件中有评论以获取更多信息
答案 5 :(得分:7)
如果您使用Elasticsearch的Github存储库(位于https://github.com/elasticsearch/elasticsearch-servicewrapper)中提供的服务包装器,则elasticsearch-servicewrapper / service / elasticsearch.conf中的conf文件将控制内存设置。在elasticsearch.conf的顶部是一个参数:
set.default.ES_HEAP_SIZE=1024
只需减少此参数,比如说“set.default.ES_HEAP_SIZE = 512”,即可减少Elasticsearch分配的内存。
请注意,如果使用elasticsearch-wrapper,elasticsearch.conf中提供的ES_HEAP_SIZE会覆盖所有其他设置。这让我有点想弄清楚,因为从文档中看来,堆内存似乎可以从elasticsearch.yml设置。
如果您的服务包装器设置在其他地方设置,例如在James的示例中的/ etc / default / elasticsearch,那么在那里设置ES_HEAP_SIZE。
答案 6 :(得分:6)
如果您使用提供的RPM / DEB软件包(如您所示)安装了ES,则可以通过编辑init脚本(/etc/init.d/elasticsearch on RHEL/CentOS
)来进行调整。如果你查看文件,你会看到一个包含以下内容的块:
export ES_HEAP_SIZE
export ES_HEAP_NEWSIZE
export ES_DIRECT_SIZE
export ES_JAVA_OPTS
export JAVA_HOME
要调整尺寸,只需将ES_HEAP_SIZE
行更改为以下内容:
export ES_HEAP_SIZE=xM/xG
(其中x是您要分配的MB / GB RAM数)
示例:
export ES_HEAP_SIZE=1G
将分配1GB。
编辑完脚本后,保存并退出,然后重新启动该服务。您可以通过运行以下命令来检查它是否已正确设置:
ps aux | grep elasticsearch
检查返回的java进程中的-Xms和-Xmx标志:
/usr/bin/java -Xms1G -Xmx1G
希望这会有所帮助:)
答案 7 :(得分:2)
在elasticsearch路径主目录中,即通常为/usr/share/elasticsearch
,
有一个配置文件bin/elasticsearch.in.sh
。
修改此文件中的参数ES_MIN_MEM
,ES_MAX_MEM
,分别更改-Xms2g
,-Xmx4g
。
并且请确保在此配置更改后重新启动了节点。
答案 8 :(得分:2)
不要将Xmx设置为JVM用于压缩对象指针(压缩的oops)的临界值之上,确切的临界值有所不同,但接近32 GB。
还可以通过环境变量设置堆大小
答案 9 :(得分:2)
在 .options
中创建一个扩展名为 /etc/elasticsearch/jvm.options.d
的新文件并将选项放在那里。例如:
sudo nano /etc/elasticsearch/jvm.options.d/custom.options
并将内容放在那里:
# JVM Heap Size - see /etc/elasticsearch/jvm.options
-Xms2g
-Xmx2g
它将最大堆大小设置为 2GB。不要忘记重新启动elasticsearch:
sudo systemctl restart elasticsearch
现在您可以查看日志了:
sudo cat /var/log/elasticsearch/elasticsearch.log | grep "heap size"
您会看到类似这样的内容:
…heap size [2gb], compressed ordinary object pointers [true]
答案 10 :(得分:1)
如果您使用Windows服务器,则可以更改环境变量,重新启动服务器以应用新的环境值并启动弹性服务。 Install Elastic in Windows Server
中的更多细节答案 11 :(得分:1)
更改堆大小的文件路径 /etc/elasticsearch/jvm.options
如果您使用的是 nano,请执行 sudo nano /etc/elasticsearch/jvm.options
并相应地更新 -Xms
和 -Xmx
。
(您可以使用任何文件编辑器对其进行编辑)
答案 12 :(得分:0)
更新路径 /etc/elasticsearch/jvm.options
中的弹性配置
################################################################
## IMPORTANT: JVM heap size
################################################################
##
## The heap size is automatically configured by Elasticsearch
## based on the available memory in your system and the roles
## each node is configured to fulfill. If specifying heap is
## required, it should be done through a file in jvm.options.d,
## and the min and max should be set to the same value. For
## example, to set the heap to 4 GB, create a new file in the
## jvm.options.d directory containing these lines:
##
## -Xms4g
## -Xmx4g
##
## See https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html
## for more information
##
################################################################
-Xms1g
-Xmx1g
这些配置意味着您为 elasticsearch 服务分配了 1GB RAM。