ElasticSearch 反复崩溃 "HeapDumpOnOutOfMemoryError"尽管有 4GB ES_MAX_MEM

标签 elasticsearch

我通过以下方式启动 ElasticSearch

echo "export ES_HEAP_SIZE = 4096" >> /root/setenv
echo "export ES_MAX_MEM = 4096" >> /root/setenv
echo "export ES_MAX_MEM = 4096" >> /root/setenv

# finally,  we can start the app
echo 'Starting ElasticSearch...'
bin/elasticsearch -Xmx4g -Xms4g

然而,在根本没有时间(20 分钟)之后,它变得没有响应,显然是由于 HeapDumpOnOutOfMemoryError...

[root@ip-***** api]# ps -ax | grep elasticsearch
 6225 ?        SLl    5:35 java -Xms256m -Xmx1g -Xss256k -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -Delasticsearch -Des.path.home=/root/elasticsearch/elasticsearch-0.20.3 -cp :/root/elasticsearch/elasticsearch-0.20.3/lib/elasticsearch-0.20.3.jar:/root/elasticsearch/elasticsearch-0.20.3/lib/*:/root/elasticsearch/elasticsearch-0.20.3/lib/sigar/* -Xmx4g -Xms4g org.elasticsearch.bootstrap.ElasticSearch

编辑——我刚刚注意到此处输出的 -Xms 大小仅为 256m,尽管在上面的启动中传递了 4g。我是不是误会了什么?

FWIW,我在运行 CentOS 和 Java v1.6.0_14-b08 的 Amazon EC2(m1.large 实例 => 8GB RAM)上

最佳答案

首先,设置 ES_HEAP_SIZE 本身并不能帮助您防止内存不足错误。 Elasticsearch 使用的内存量取决于您执行的查询类型:是否使用分面、排序、过滤、有多少字段、这些字段有多大、它们的基数是多少等。

其次,最好使用 ES_INCLUDE脚本,或 service wrapper ,而不是将命令行上需要的所有选项传递给 elasticsearch 脚本。

第三,当您正确设置了ES_HEAP_SIZE 环境变量时,您不需要将-X 选项传递给elasticsearch 脚本.事实上,这些选项没有任何作用——脚本不会将它们传递给 Java。使用 ES_HEAP_SIZE 变量来控制内存,并使用 ES_JAVA_OPTIONS 来控制您要传递给 Java 的其他变量。

关于ElasticSearch 反复崩溃 "HeapDumpOnOutOfMemoryError"尽管有 4GB ES_MAX_MEM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14714036/

相关文章:

json - 将ElasticSearch文档按xml标记值分组(在字符串字段中)

elasticsearch - Elasticsearch查询结果为 'No query registered for [must]'

database - Elasticsearch 唯一字段

ruby-on-rails - 从方法返回的对象的索引方法-Elasticsearch

search - 重要条款导致 CircuitBreakingException

java - 我如何按所有字段进行 Elasticsearch (Spring)?

elasticsearch - 将快照添加到Elasticsearch Windows

python-2.7 - kibana不加载时间序列数据

mysql - Elasticsearch 与 MariaDB 的数据完整性问题

node.js - Elasticsearch Reindex丢失了一些记录