Elasticsearch段建立起来,堆增加直到崩溃

时间:2017-12-24 14:02:15

标签: elasticsearch lucene heap elasticsearch-2.0 segments

我需要一些ElasticSearch帮助解决几个月来困扰我的问题,无论我做什么都没有任何真正的改进。

我运行了一个6节点集群,由6个数据节点r4.xlarge(30.5GB)组成,其中3个也是符合条件的主服务器。每个节点都有14GB的HEAP内存。

问题如下: 堆锯锯齿图案是可见的,但随着时间的推移,它变得越来越小,直到节点崩溃的程度。 见例子: ES Heap

堆正在与段一起构建,您可以看到在创建新的每日索引时,每晚都会发生段数的峰值。

我们的设置由2个主要索引和2个小索引组成,全部映射。 2个主要索引有4个碎片,1个复制品,小碎片有1个碎片和1个复制品。

主要指数的每日指数大小各不相同:

  • 展示次数指数 - 每天约70-100GB,约15万个文件
  • 出价指数 - 每日25-40GB,约1300万份文件 在两者上,refresh_interval设置为5s。

索引率不是很高: indexing rate 我甚至说它对于如此强大的集群而言相当低。

显然,存在一些配置问题导致段无休止地建立并对堆内存使用造成压力。

我尝试过使用shards countnumber of replicasrefresh_interval以及更多......没有用。 集群的这种设置甚至从m4.xlarge机器升级到新的r4.xlarge机器 - 这几乎没有任何影响!!

重要的是要提到我们每小时运行多个聚合级别的真实繁重的查询,最多7天的数据(7个索引),但是有这么多的RAM和正确的索引这不应该&#39是一个问题。

ElasticSearch版本是2.4.1,每个r4.xlarge节点包含30.5GB RAM& 1200GB SSD。当然,所有托管在AWS上。

1 个答案:

答案 0 :(得分:0)

您是否在节点上设置了此值?

indices.fielddata.cache.size: 20%

根据设计,在需要时将字段数据加载到内存中,并且从不逐出。它们将填充堆,直到OutOfMemory异常。这不是错误,而是功能。

配置缓存限制以停止该“功能”至关重要。

我在ElasticSearch 2.x上有集群,它们都遇到了这个问题。我不确定是否在更高版本中对其进行了调整,以默认情况下不会系统地耗尽内存。

使用stats API查看资源使用情况:https://www.elastic.co/guide/en/elasticsearch/reference/2.4/cluster-nodes-stats.html