我需要一些ElasticSearch帮助解决几个月来困扰我的问题,无论我做什么都没有任何真正的改进。
我运行了一个6节点集群,由6个数据节点r4.xlarge(30.5GB)组成,其中3个也是符合条件的主服务器。每个节点都有14GB的HEAP内存。
问题如下: 堆锯锯齿图案是可见的,但随着时间的推移,它变得越来越小,直到节点崩溃的程度。 见例子:
堆正在与段一起构建,您可以看到在创建新的每日索引时,每晚都会发生段数的峰值。
我们的设置由2个主要索引和2个小索引组成,全部映射。 2个主要索引有4个碎片,1个复制品,小碎片有1个碎片和1个复制品。
主要指数的每日指数大小各不相同:
显然,存在一些配置问题导致段无休止地建立并对堆内存使用造成压力。
我尝试过使用shards count
,number of replicas
,refresh_interval
以及更多......没有用。
集群的这种设置甚至从m4.xlarge机器升级到新的r4.xlarge机器 - 这几乎没有任何影响!!
重要的是要提到我们每小时运行多个聚合级别的真实繁重的查询,最多7天的数据(7个索引),但是有这么多的RAM和正确的索引这不应该&#39是一个问题。
ElasticSearch版本是2.4.1,每个r4.xlarge节点包含30.5GB RAM& 1200GB SSD。当然,所有托管在AWS上。
答案 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