【发布时间】:2018-06-06 06:30:55
【问题描述】:
我需要一些 ElasticSearch 帮助来解决困扰我几个月的问题,无论我做什么都没有任何真正的改善。
我运行一个 6 节点集群,由 6 个数据节点 r4.xlarge (30.5GB) 组成,其中 3 个也是合格的主节点。每个节点分配有 14GB 的 HEAP 内存。
问题如下: 堆锯齿图案是可见的,但随着时间的推移,它会变得越来越小,直至节点崩溃。 参见示例:
堆与段一起建立,您可以看到每晚创建新的每日索引时段计数的峰值。
我们的设置由 2 个主要索引和 2 个小索引组成,全部映射。 2个主索引有4个shard 1个replica,小的有1个shard 1个replica。
主要指数的每日指数大小不同:
- 展示次数指数 - 每天约 70-100GB,约 1500 万份文档
- 出价指数 - 每天 25-40GB,约 1300 万份文档 在两者上,refresh_interval 都设置为 5 秒。
显然存在一些配置问题,导致段无休止地建立起来并对堆内存使用造成压力。
我已经尝试过使用shards count、number of replicas、refresh_interval 和更多...不行。
集群的这种设置甚至从 m4.xlarge 机器升级到了新的 r4.xlarge 机器——这也几乎没有任何效果!!
值得一提的是,我们每小时运行具有多个聚合级别的真正繁重的查询,最多可处理 7 天的数据(7 个索引),但有了如此多的 RAM 和正确的索引,这应该不是问题。
ElasticSearch 版本为 2.4.1,每个 r4.xlarge 节点由 30.5GB RAM 和 1200GB SSD 组成。当然,所有这些都托管在 AWS 上。
【问题讨论】:
-
在段数激增期间,您是否在日志中看到任何“正在限制索引”消息?
-
@ArchitSaxena 我在每个节点上都尝试了以下操作:
grep -E 'throttle|throttling|indexing' /var/log/elasticsearch/*.log- 没有任何结果。 -
我已将
indices.store.throttle.max_bytes_per_sec增加到 150mb。看最后一小时似乎没有任何区别.. -
因此,它似乎与繁重的索引无关(您已经报告了大声笑)。但是你必须有很多索引,因为你每天都在创建新的索引。你对旧的怎么办?也许尝试在它们上运行一个明确的
optimize,看看它如何影响段数?
标签: elasticsearch lucene heap-memory segment elasticsearch-2.0