我有一个默认配置为Elasticsearch的Apache服务器,除了默认配置的最大大小为1GB外,一切都运行良好.
我没有在Elasticsearch中存储如此大量的文档,所以我想减少内存.
我已经看到我必须更改-XmxJava配置中的参数,但我不知道如何.
我看到我可以执行此操作:
bin/ElasticSearch -Xmx=2G -Xms=2G
Run Code Online (Sandbox Code Playgroud)
但是当我必须重新启动Elasticsearch时,这将会丢失.
当Elasticsearch作为服务安装时,是否可以更改最大内存使用量?
Big*_*Ron 123
在ElasticSearch> = 5中,文档已更改,这意味着上述答案都不适用于我.
我试图改变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
Run Code Online (Sandbox Code Playgroud)
Jam*_*son 116
2016年11月24日更新:Elasticsearch 5显然已经改变了配置JVM的方式.在这里看到这个答案.以下答案仍适用于版本<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
Run Code Online (Sandbox Code Playgroud)
/ etc/default/elasticsearch(在CentOS/RH上:/ etc/sysconfig/elasticsearch):
ES_HEAP_SIZE=512m
MAX_OPEN_FILES=65535
MAX_LOCKED_MEMORY=unlimited
Run Code Online (Sandbox Code Playgroud)
/etc/elasticsearch/elasticsearch.yml:
bootstrap.mlockall: true
Run Code Online (Sandbox Code Playgroud)
小智 26
对于任何想要在Centos 7或运行SystemD的其他系统上执行此操作的人,您可以将其更改为
/etc/sysconfig/elasticsearch
Run Code Online (Sandbox Code Playgroud)
取消注释ES_HEAP_SIZE行,并设置一个值,例如:
# Heap Size (defaults to 256m min, 1g max)
ES_HEAP_SIZE=16g
Run Code Online (Sandbox Code Playgroud)
(忽略关于1g max的评论 - 这是默认值)
小智 9
以前的答案在我的情况下是不够的,可能是因为我在Debian 8上,而他们被引用到之前的一些发行版.
在Debian 8上修改通常放置的服务脚本/usr/lib/systemd/system/elasticsearch.service,并添加Environment=ES_HEAP_SIZE=8G
在其他"Environment =*"行下面.
现在重新加载服务脚本systemctl daemon-reload并重新启动服务.工作应该完成!
说明ubuntu 14.04:
sudo vim /etc/init.d/elasticsearch
组
ES_HEAP_SIZE=512m
然后在:
sudo vim /etc/elasticsearch/elasticsearch.yml
组:
bootstrap.memory_lock: true
文件中有注释以获取更多信息
如果您使用Elasticsearch的Github存储库中提供的服务包装器(位于https://github.com/elasticsearch/elasticsearch-servicewrapper),则elasticsearch-servicewrapper/service/elasticsearch.conf中的conf文件将控制内存设置.在elasticsearch.conf的顶部是一个参数:
set.default.ES_HEAP_SIZE=1024
Run Code Online (Sandbox Code Playgroud)
只需减小此参数,例如"set.default.ES_HEAP_SIZE = 512",即可减少Elasticsearch的分配内存.
请注意,如果使用elasticsearch-wrapper,elasticsearch.conf中提供的ES_HEAP_SIZE会覆盖所有其他设置.这让我有点想弄清楚,因为从文档中看来,堆内存似乎可以从elasticsearch.yml设置.
如果您的服务包装器设置在其他地方设置,例如在James的示例中的/ etc/default/elasticsearch,那么在那里设置ES_HEAP_SIZE.
小智 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
Run Code Online (Sandbox Code Playgroud)
要调整大小,只需将ES_HEAP_SIZE行更改为以下内容:
export ES_HEAP_SIZE=xM/xG
Run Code Online (Sandbox Code Playgroud)
(其中x是您要分配的MB/GB RAM数)
例:
export ES_HEAP_SIZE=1G
Run Code Online (Sandbox Code Playgroud)
将分配1GB.
编辑完脚本后,保存并退出,然后重新启动该服务.您可以通过运行以下命令来检查它是否已正确设置:
ps aux | grep elasticsearch
Run Code Online (Sandbox Code Playgroud)
并检查返回的java进程中的-Xms和-Xmx标志:
/usr/bin/java -Xms1G -Xmx1G
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助 :)
小智 6
Don\xe2\x80\x99t 将 Xmx 设置为高于 JVM 用于压缩对象指针(压缩 oops)的截止值,确切的截止值有所不同,但接近 32 GB。
\n\n还可以通过环境变量设置堆大小
\n\n更改堆大小的文件路径/etc/elasticsearch/jvm.options
如果您使用的是 nano,请进行相应的sudo nano /etc/elasticsearch/jvm.options更新。-Xms-Xmx
(您可以使用任何文件编辑器来编辑它)
创建具有扩展名的新文件.options中/etc/elasticsearch/jvm.options.d,并把该选项那里。例如:
sudo nano /etc/elasticsearch/jvm.options.d/custom.options
Run Code Online (Sandbox Code Playgroud)
并将内容放在那里:
# JVM Heap Size - see /etc/elasticsearch/jvm.options
-Xms2g
-Xmx2g
Run Code Online (Sandbox Code Playgroud)
它将最大堆大小设置为 2GB。不要忘记重新启动elasticsearch:
sudo systemctl restart elasticsearch
Run Code Online (Sandbox Code Playgroud)
现在您可以检查日志:
sudo cat /var/log/elasticsearch/elasticsearch.log | grep "heap size"
Run Code Online (Sandbox Code Playgroud)
你会看到类似这样的东西:
… heap size [2gb], compressed ordinary object pointers [true]
| 归档时间: |
|
| 查看次数: |
122042 次 |
| 最近记录: |