2

我已经设置了 elasticsearch 并且效果很好。

我已经完成了一些批量插入并进行了一些负载测试。但是,它已经闲置了一段时间,我不确定为什么堆大小没有减少到50mb它开始时的大小?我猜GC没有发生?

在此处输入图像描述

请注意,节点在 AWS 上的不同机器上运行。它们都在小型实例上,每个实例都有 1.7GB 的 RAM。

有任何想法吗?

4

3 回答 3

2

大概。很难说,JVM 管理内存并做它认为最好的事情。它可能会避免 GC 循环,因为它根本没有必要。实际上,建议设置mlockall为true,这样堆在启动时就被完全分配,并且永远不会改变。

ES将内存用于堆并不是真正的问题......内存是要使用的,而不是保存的。除非你有记忆问题,否则我会忽略它并继续。

于 2013-03-27T12:50:22.247 回答
1

ElasticSearch 和 Lucene 维护缓存数据以执行快速排序或分面。

如果您的查询正在进行排序,这可能会增加可能无法释放的 Lucene FieldCache 大小,因为此处的对象不符合 GC 条件。因此 75% 的默认阈值 (CMSInitiatingOccupancyFraction) 不适用于此处。

于 2013-05-16T15:04:17.317 回答
1

您可以按照此处的说明管理 FieldCache 持续时间:http ://www.elasticsearch.org/guide/en/elasticsearch/reference/current/index-modules-fielddata.html

于 2013-11-27T10:43:52.243 回答