为什么ElasticSearch堆大小不能恢复正常?

时间:2013-03-27 12:18:20

标签: elasticsearch

我已设置弹性搜索,效果很好。

我做了一些批量插入并进行了一些负载测试。然而,它已经闲置了一段时间,我不确定为什么堆大小不会减少到大约50mb这就是它开始时的情况?我猜GC没有发生过?

enter image description here

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

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

可能。很难说,JVM管理内存并做它认为最好的事情。它可能是避免GC循环,因为它根本不是必需的。实际上,建议将mlockall设置为true,以便在启动时完全分配堆,并且永远不会更改。

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)