我正在运行一个8核,32g RAM弹性搜索节点,包含5个分片,4亿个(小)文档。
在我运行agg搜索之前一切正常,然后分片开始失败:
java.lang.OutOfMemoryError: Java heap space
我有changed heap size:
export ES_HEAP_SIZE=16g
(同样ES_MAX_MEM
和ES_MIN_MEM
)
还更改了elasticsearch的{{1}}文件:
yml
甚至(安装文档推荐):
bootstrap.mlockall: true
重启服务但仍然没有影响,仍为sudo sysctl -w vm.max_map_count=262144
还有其他建议吗?除了不运行agg查询?
查询是:
java.lang.OutOfMemoryError: Java heap space
答案 0 :(得分:19)
我想我发现了这个错误。我使用'service'来运行elasticsearch,因此我的环境变量被剥离了。我必须使用correcct env变量(特别是/etc/default/elasticsearch
)更新ES_HEAP_SIZE=16g
文件。
到目前为止,它运行良好且应用程序没有错误。
答案 1 :(得分:5)
更新Elasticsearch 5的Java堆大小的正确方法不是EXPORT _JAVA_OPTIONS
或EXPORT ES_HEAP_SIZE
或使用命令行参数。据我所知,所有这些都被Elasticsearch安装目录config/jvm.options
中的配置文件覆盖。要更改这些设置,您需要在该文件中编辑这些行:
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms2g
-Xmx2g