Java Solr cloud 4.8.1和Lucene中的内存泄漏

Java Solr cloud 4.8.1和Lucene中的内存泄漏,java,solr,lucene,solrcloud,Java,Solr,Lucene,Solrcloud,我有一个solr cloud实例版本4.8.1,它有8个节点,4个碎片,在JVM上面临内存泄漏 下面是该实例的详细信息 8个节点,4个分片(每个分片2个节点) 每个节点有大约55GB的数据,总共有4.5亿个文档在收集中。所以文档的大小不是很大 该模式有42个字段,每15分钟会重新加载大约50000个文档。现在我们有了索引的主键,因此当存在任何重复项时,文档将被重新写入 GC策略是CMS,堆大小最小值和最大值分别为8 gb和512 mb,VM上的RAM为24 gb 当用户开始在solr中搜索(大约

我有一个solr cloud实例版本4.8.1,它有8个节点,4个碎片,在JVM上面临内存泄漏

下面是该实例的详细信息

  • 8个节点,4个分片(每个分片2个节点)
  • 每个节点有大约55GB的数据,总共有4.5亿个文档在收集中。所以文档的大小不是很大
  • 该模式有42个字段,每15分钟会重新加载大约50000个文档。现在我们有了索引的主键,因此当存在任何重复项时,文档将被重新写入
  • GC策略是CMS,堆大小最小值和最大值分别为8 gb和512 mb,VM上的RAM为24 gb 当用户开始在solr中搜索(大约50个并发用户)时,堆并不总是不断增长,而GC周期并没有清除堆。我看到GC运行了将近100000毫秒,仍然没有清除堆。这里肯定发生了内存泄漏

    查看JVM堆大小为99.9%时的堆转储,我看到org.apache.lucene.search.FieldCacheImpl占用大量内存7.13 GB(在7.5 GB堆中),它的浅层大小只有32字节,但引用了大量HashMap和WeakHashMap对象,看起来像是一个单例,但找不到这样做的原因。
    发布到此处,以了解是否有人在solr cloud中遇到过大量数据的内存泄漏问题,以及是否可以通过配置更改进行补救。

    结果表明,lucene field cache将用于排序和刻面操作,如果排序是一个强制使用案例,则解决方案是使用定义字段(如下所示)用于对数据进行排序的属性

    <field name="test_field" type="string" indexed="false" stored="false" docValues="true" />
    
    
    
    文本字段和标记化器不支持docvalue,因此在本例中,我定义了一个类型为
    solr.StrField
    的新字段,并将其用于排序操作

    这消除了高速缓存和Java堆内存的高使用率,而不必损害任何功能。

    您应该将其发布,因为我认为它更适合您的问题。