我正在运行一个 8 核、32g RAM 的弹性搜索节点,它有 5 个分片、4 亿(小)文档。
一切正常,直到我运行 agg 搜索,然后分片开始失败:
java.lang.OutOfMemoryError: Java heap space
我 更改了堆大小: export ES_HEAP_SIZE=16g
(还有 ES_MAX_MEM
和 ES_MIN_MEM
相同)
还为 elasticsearch 更改了 yml
文件:
bootstrap.mlockall: true
甚至(安装文档推荐):
sudo sysctl -w vm.max_map_count=262144
重启服务还是没影响,还是 java.lang.OutOfMemoryError: Java heap space
还有其他建议吗?除了不运行 agg 查询?
查询是:
https://localhost:9200/my_index_name/_search?search_type=count
{
"aggs": {
"distinct_hostname": {
"cardinality": {
"field": "hostname"
}
}
}
}
原文由 B.P 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想我已经发现了错误。我正在使用“服务”来运行 elasticsearch,因此我的环境变量被删除了。我必须使用正确的环境变量(特别是
ES_HEAP_SIZE=16g
)更新/etc/default/elasticsearch
文件。到目前为止它运行良好并且应用程序没有错误。