错误:

timeout notification from cluster service. timeout setting 1m, time since start 1m) Caused by:
 java.lang.OutOfMemoryError: Java heap space:

可能原因:

1.读取过多的数据到内存,尤其是field data字段(在使用sorting和aggregations)

2.配置出错,设置的heap size没有生效,可能是设置错地方了。默认的heap size(min 256M,max 1G)是不够用的。

3.做索引的数据过多,比如bulk size设置过大

4.查询时,要求返回的数据量太大(size设置过大)

5.主节点的内存不够用,这种情况下可能是由于cluster state引起的。若索引使用大量的别名(alias),cluster state就会使用大量的内存。

解决方法

我的程序是向ES中提交数据比较大,索引造成了堆内存变大,超出了限制。
1.将提交的数据包变小。
2.将修改ES的配置文件,增大ES的JVM的Heap Size大小,默认是1G的启动内存。我们可以根据自己的机器情况,适当增加。
在ES6.X,7.X中,是需要在配置文件中进行修改,以前版本的则是修改环境变量或启动es中加入命令行。
以7.4版本为例:

配置文件在./elasticsearch-7.4.0/config/jvm.options
修改jvm.options文件
在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐