我已设置弹性搜索,效果很好。
我做了一些批量插入并进行了一些负载测试。然而,它已经闲置了一段时间,我不确定为什么堆大小不会减少到大约50mb
这就是它开始时的情况?我猜GC没有发生过?
请注意,节点在AWS上的不同计算机上运行。它们都是小型实例,每个实例都有1.7GB的RAM。
有什么想法吗?
答案 0 :(得分:2)
可能。很难说,JVM管理内存并做它认为最好的事情。它可能是避免GC循环,因为它根本不是必需的。实际上,建议将mlockall
设置为true,以便在启动时完全分配堆,并且永远不会更改。
ES使用内存来存储堆并不是一个问题......内存是要使用的,而不是保存的。除非你有记忆问题,否则我会忽略它并继续。
答案 1 :(得分:1)
ElasticSearch和Lucene维护缓存数据以执行快速排序或方面。
如果您的查询正在进行排序,这可能会增加Lucene FieldCache大小,因为此处的对象不符合GC的条件,因此可能无法释放。 因此75%的默认阈值(CMSInitiatingOccupancyFraction)不适用于此。
答案 2 :(得分:1)
您可以按照此处的说明管理FieldCache持续时间:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/index-modules-fielddata.html